Changeset 4771
- Timestamp:
- 03/21/07 21:20:33 (1 year ago)
- Files:
-
- django/trunk/django/contrib/sessions/middleware.py (modified) (1 diff)
- django/trunk/django/contrib/sessions/models.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/sessions/middleware.py
r4680 r4771 84 84 patch_vary_headers(response, ('Cookie',)) 85 85 if modified or settings.SESSION_SAVE_EVERY_REQUEST: 86 session_key = request.session.session_key or Session.objects.get_new_session_key() 86 if request.session.session_key: 87 session_key = request.session.session_key 88 else: 89 obj = Session.objects.get_new_session_object() 90 session_key = obj.session_key 91 87 92 if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE: 88 93 max_age = None django/trunk/django/contrib/sessions/models.py
r4265 r4771 1 import base64, md5, random, sys 1 import base64, md5, random, sys, datetime 2 2 import cPickle as pickle 3 3 from django.db import models … … 23 23 break 24 24 return session_key 25 26 def get_new_session_object(self): 27 """ 28 Returns a new session object. 29 """ 30 # FIXME: There is a *small* chance of collision here, meaning we will 31 # return an existing object. That can be fixed when we add a way to 32 # validate (and guarantee) that non-auto primary keys are unique. For 33 # now, we save immediately in order to reduce the "window of 34 # misfortune" as much as possible. 35 created = False 36 while not created: 37 obj, created = self.get_or_create(session_key=self.get_new_session_key(), 38 expire_date = datetime.datetime.now()) 39 # Collision in key generation, so re-seed the generator 40 random.seed() 41 return obj 25 42 26 43 def save(self, session_key, session_dict, expire_date):
