Django

Code

Show
Ignore:
Timestamp:
06/26/08 10:11:55 (7 months ago)
Author:
jbronn
Message:

gis: Merged revisions 7643-7662,7667-7668,7672-7682,7686-7693,7695-7698,7700-7702,7704-7706,7710,7712-7729,7731-7732,7738-7758,7760-7766 via svnmerge from trunk.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/gis

    • Property svnmerge-integrated changed from /django/trunk:1-7641 to /django/trunk:1-7767
  • django/branches/gis/django/templatetags/cache.py

    r7354 r7768  
    1 from django.template import Library, Node, TemplateSyntaxError 
     1from django.template import Library, Node, TemplateSyntaxError, Variable, VariableDoesNotExist 
    22from django.template import resolve_variable 
    33from django.core.cache import cache 
     
    77 
    88class CacheNode(Node): 
    9     def __init__(self, nodelist, expire_time, fragment_name, vary_on): 
     9    def __init__(self, nodelist, expire_time_var, fragment_name, vary_on): 
    1010        self.nodelist = nodelist 
    11         self.expire_time = expire_time 
     11        self.expire_time_var = Variable(expire_time_var) 
    1212        self.fragment_name = fragment_name 
    1313        self.vary_on = vary_on 
    1414 
    1515    def render(self, context): 
     16        try: 
     17            expire_time = self.expire_time_var.resolve(context) 
     18        except VariableDoesNotExist: 
     19            raise TemplateSyntaxError('"cache" tag got an unknkown variable: %r' % self.expire_time_var.var) 
     20        try: 
     21            expire_time = int(expire_time) 
     22        except (ValueError, TypeError): 
     23            raise TemplateSyntaxError('"cache" tag got a non-integer timeout value: %r' % expire_time) 
    1624        # Build a unicode key for this fragment and all vary-on's. 
    17         cache_key = u':'.join([self.fragment_name] + \ 
    18             [force_unicode(resolve_variable(var, context)) for var in self.vary_on]) 
     25        cache_key = u':'.join([self.fragment_name] + [force_unicode(resolve_variable(var, context)) for var in self.vary_on]) 
    1926        value = cache.get(cache_key) 
    2027        if value is None: 
    2128            value = self.nodelist.render(context) 
    22             cache.set(cache_key, value, self.expire_time) 
     29            cache.set(cache_key, value, expire_time) 
    2330        return value 
    2431 
     
    4956    if len(tokens) < 3: 
    5057        raise TemplateSyntaxError(u"'%r' tag requires at least 2 arguments." % tokens[0]) 
    51     try: 
    52         expire_time = int(tokens[1]) 
    53     except ValueError: 
    54         raise TemplateSyntaxError(u"First argument to '%r' must be an integer (got '%s')." % (tokens[0], tokens[1])) 
    55     return CacheNode(nodelist, expire_time, tokens[2], tokens[3:]) 
     58    return CacheNode(nodelist, tokens[1], tokens[2], tokens[3:]) 
    5659 
    5760register.tag('cache', do_cache)