Django

Code

Changeset 5712

Show
Ignore:
Timestamp:
07/15/07 22:50:22 (1 year ago)
Author:
mtredinnick
Message:

Fixed #4199 -- Changed date formatting in HTTP expires header to be spec
compliant. Thanks, Chris Bennett.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/AUTHORS

    r5711 r5712  
    5858    Shannon -jj Behrens <http://jjinux.blogspot.com/> 
    5959    Esdras Beleza <linux@esdrasbeleza.com> 
     60    Chris Bennett <chrisrbennett@yahoo.com> 
    6061    James Bennett 
    6162    Ben <afternoon@uk2.net> 
  • django/trunk/django/contrib/sessions/middleware.py

    r5592 r5712  
    33from django.core.exceptions import SuspiciousOperation 
    44from django.utils.cache import patch_vary_headers 
     5from email.Utils import formatdate 
    56import datetime 
     7import time 
    68 
    79TEST_COOKIE_NAME = 'testcookie' 
     
    3840 
    3941    def pop(self, key, *args): 
    40         self.modified = self.modified or key in self._session  
     42        self.modified = self.modified or key in self._session 
    4143        return self._session.pop(key, *args) 
    4244 
     
    99101                else: 
    100102                    max_age = settings.SESSION_COOKIE_AGE 
    101                     expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE), "%a, %d-%b-%Y %H:%M:%S GMT") 
     103                    rfcdate = formatdate(time.time() + settings.SESSION_COOKIE_AGE) 
     104                    # Fixed length date must have '-' separation in the format 
     105                    # DD-MMM-YYYY for compliance with Netscape cookie standard 
     106                    expires = (rfcdate[:7] + "-" + rfcdate[8:11] 
     107                               + "-" + rfcdate[12:26] + "GMT") 
    102108                new_session = Session.objects.save(session_key, request.session._session, 
    103109                    datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)) 
  • django/trunk/django/core/servers/basehttp.py

    r5511 r5712  
    1010from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer 
    1111from types import ListType, StringType 
    12 import os, re, sys, time, urllib, mimetypes 
     12from email.Utils import formatdate 
     13import mimetypes 
     14import os 
     15import re 
     16import sys 
     17import time 
     18import urllib 
    1319 
    1420__version__ = "0.1" 
     
    371377                if 'Date' not in self.headers: 
    372378                    self._write( 
    373                         'Date: %s\r\n' % time.asctime(time.gmtime(time.time())) 
     379                        'Date: %s\r\n' % formatdate()[:26] + "GMT" 
    374380                    ) 
    375381                if self.server_software and 'Server' not in self.headers: 
  • django/trunk/django/middleware/http.py

    r4265 r5712  
    1 import datetim
     1from email.Utils import formatdat
    22 
    33class ConditionalGetMiddleware(object): 
     
    1212    """ 
    1313    def process_response(self, request, response): 
    14         now = datetime.datetime.utcnow() 
    15         response['Date'] = now.strftime('%a, %d %b %Y %H:%M:%S GMT') 
     14        response['Date'] = formatdate()[:26] + "GMT" 
    1615        if not response.has_header('Content-Length'): 
    1716            response['Content-Length'] = str(len(response.content)) 
  • django/trunk/django/utils/cache.py

    r5609 r5712  
    1818""" 
    1919 
    20 import datetime, md5, re 
     20import md5 
     21import re 
     22import time 
     23from email.Utils import formatdate 
    2124from django.conf import settings 
    2225from django.core.cache import cache 
     
    4548 
    4649    def dictvalue(t): 
    47         if t[1] == True: 
     50        if t[1] is True: 
    4851            return t[0] 
    4952        else: 
     
    7477    if cache_timeout is None: 
    7578        cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS 
    76     now = datetime.datetime.utcnow() 
     79    if cache_timeout < 0: 
     80        cache_timeout = 0 # Can't have max-age negative 
    7781    if not response.has_header('ETag'): 
    7882        response['ETag'] = md5.new(response.content).hexdigest() 
    7983    if not response.has_header('Last-Modified'): 
    80         response['Last-Modified'] = now.strftime('%a, %d %b %Y %H:%M:%S GMT') 
     84        response['Last-Modified'] = formatdate()[:26] + "GMT" 
    8185    if not response.has_header('Expires'): 
    82         expires = now + datetime.timedelta(0, cache_timeout) 
    83         response['Expires'] = expires.strftime('%a, %d %b %Y %H:%M:%S GMT') 
    84     if cache_timeout < 0: 
    85         cache_timeout = 0 # Can't have max-age negative 
     86        response['Expires'] = formatdate(time.time() + cache_timeout)[:26] + "GMT" 
    8687    patch_cache_control(response, max_age=cache_timeout) 
    8788