Django

Code

Ticket #2548: session_middleware.diff

File session_middleware.diff, 2.1 kB (added by upadhyay@gmail.com, 1 year ago)

the patch was too old, i have fixed it to apply on a week old checkout.

  • contrib/sessions/middleware.py

    old new  
    1212        self.session_key = session_key 
    1313        self.accessed = False 
    1414        self.modified = False 
     15        self.expires_time = False 
    1516 
    1617    def __contains__(self, key): 
    1718        return key in self._session 
     
    4849    def delete_test_cookie(self): 
    4950        del self[TEST_COOKIE_NAME] 
    5051 
     52    def set_expires(self, val): 
     53        self.expires_time = val 
     54        self.modified = True 
     55 
     56    def get_expires(self): 
     57        return self.expires_time or settings.SESSION_COOKIE_AGE 
     58 
     59 
    5160    def _get_session(self): 
    5261        # Lazily loads session from storage. 
    5362        self.accessed = True 
     
    6978            return self._session_cache 
    7079 
    7180    _session = property(_get_session) 
     81    expires = property(get_expires, set_expires) 
    7282 
    7383class SessionMiddleware(object): 
    7484    def process_request(self, request): 
     
    96106                    max_age = None 
    97107                    expires = None 
    98108                else: 
    99                     max_age = settings.SESSION_COOKIE_AGE 
    100                     expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE), "%a, %d-%b-%Y %H:%M:%S GMT") 
     109                    max_age = request.session.expires 
     110                    delta_yield = datetime.datetime.now() + datetime.timedelta(seconds=max_age) 
     111                    expires = datetime.datetime.strftime(delta_yield, "%a, %d-%b-%Y %H:%M:%S GMT") 
    101112                new_session = Session.objects.save(session_key, request.session._session, 
    102                     datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)
     113                    delta_yield
    103114                response.set_cookie(settings.SESSION_COOKIE_NAME, session_key, 
    104115                    max_age=max_age, expires=expires, domain=settings.SESSION_COOKIE_DOMAIN, 
    105116                    secure=settings.SESSION_COOKIE_SECURE or None)