~ubuntu-branches/ubuntu/quantal/python-django/quantal

« back to all changes in this revision

Viewing changes to django/utils/cache.py

  • Committer: Bazaar Package Importer
  • Author(s): Chris Lamb
  • Date: 2009-07-29 11:26:28 UTC
  • mfrom: (1.1.8 upstream) (4.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090729112628-pg09ino8sz0sj21t
Tags: 1.1-1
* New upstream release.
* Merge from experimental:
  - Ship FastCGI initscript and /etc/default file in python-django's examples
    directory (Closes: #538863)
  - Drop "05_10539-sphinx06-compatibility.diff"; it has been applied
    upstream.
  - Bump Standards-Version to 3.8.2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
from django.utils.encoding import smart_str, iri_to_uri
30
30
from django.utils.http import http_date
31
31
from django.utils.hashcompat import md5_constructor
 
32
from django.http import HttpRequest
32
33
 
33
34
cc_delim_re = re.compile(r'\s*,\s*')
34
35
 
143
144
        value = request.META.get(header, None)
144
145
        if value is not None:
145
146
            ctx.update(value)
 
147
    path = md5_constructor(iri_to_uri(request.path))
146
148
    return 'views.decorators.cache.cache_page.%s.%s.%s' % (
147
 
               key_prefix, iri_to_uri(request.path), ctx.hexdigest())
 
149
               key_prefix, path.hexdigest(), ctx.hexdigest())
 
150
 
 
151
def _generate_cache_header_key(key_prefix, request):
 
152
    """Returns a cache key for the header cache."""
 
153
    path = md5_constructor(iri_to_uri(request.path))
 
154
    return 'views.decorators.cache.cache_header.%s.%s' % (key_prefix, path.hexdigest())
148
155
 
149
156
def get_cache_key(request, key_prefix=None):
150
157
    """
158
165
    """
159
166
    if key_prefix is None:
160
167
        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
161
 
    cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
162
 
                    key_prefix, iri_to_uri(request.path))
 
168
    cache_key = _generate_cache_header_key(key_prefix, request)
163
169
    headerlist = cache.get(cache_key, None)
164
170
    if headerlist is not None:
165
171
        return _generate_cache_key(request, headerlist, key_prefix)
183
189
        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
184
190
    if cache_timeout is None:
185
191
        cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
186
 
    cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
187
 
                    key_prefix, iri_to_uri(request.path))
 
192
    cache_key = _generate_cache_header_key(key_prefix, request)
188
193
    if response.has_header('Vary'):
189
194
        headerlist = ['HTTP_'+header.upper().replace('-', '_')
190
195
                      for header in cc_delim_re.split(response['Vary'])]