Changeset 7770 for django/branches/newforms-admin/django/templatetags
- Timestamp:
- 06/26/08 10:42:33 (7 months ago)
- Files:
-
- django/branches/newforms-admin (modified) (1 prop)
- django/branches/newforms-admin/django/templatetags/cache.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/newforms-admin
- Property svnmerge-integrated changed from /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7729 to /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7768
django/branches/newforms-admin/django/templatetags/cache.py
r7351 r7770 1 from django.template import Library, Node, TemplateSyntaxError 1 from django.template import Library, Node, TemplateSyntaxError, Variable, VariableDoesNotExist 2 2 from django.template import resolve_variable 3 3 from django.core.cache import cache … … 7 7 8 8 class 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): 10 10 self.nodelist = nodelist 11 self.expire_time = expire_time11 self.expire_time_var = Variable(expire_time_var) 12 12 self.fragment_name = fragment_name 13 13 self.vary_on = vary_on 14 14 15 15 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) 16 24 # 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]) 19 26 value = cache.get(cache_key) 20 27 if value is None: 21 28 value = self.nodelist.render(context) 22 cache.set(cache_key, value, self.expire_time)29 cache.set(cache_key, value, expire_time) 23 30 return value 24 31 … … 49 56 if len(tokens) < 3: 50 57 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:]) 56 59 57 60 register.tag('cache', do_cache)
