Example #1
0
 def render(self, context):
     try:
         expire_time = self.expire_time_var.resolve(context)
     except VariableDoesNotExist:
         raise TemplateSyntaxError(
             '"cache" tag got an unknown variable: %r' %
             self.expire_time_var.var)
     try:
         expire_time = int(expire_time)
     except (ValueError, TypeError):
         raise TemplateSyntaxError(
             '"cache" tag got a non-integer timeout value: %r' %
             expire_time)
     # Build a unicode key for this fragment and all vary-on's.
     args = md5_constructor(u':'.join([
         urlquote(resolve_variable(var, context)) for var in self.vary_on
     ]))
     cache_key = 'template.cache.%s.%s' % (self.fragment_name,
                                           args.hexdigest())
     value = cache.get(cache_key)
     if value is None:
         value = self.nodelist.render(context)
         req = context.get('request', None)
         if req:
             value, dimensions_found = add_dimensions(
                 value, req.build_absolute_uri())
         else:
             dimensions_found = False
         if dimensions_found:
             cache.set(cache_key, value, expire_time)
     return value
 def render(self, context):
     try:
         expire_time = self.expire_time_var.resolve(context)
     except VariableDoesNotExist:
         raise TemplateSyntaxError('"cache" tag got an unknown variable: %r' % self.expire_time_var.var)
     try:
         expire_time = int(expire_time)
     except (ValueError, TypeError):
         raise TemplateSyntaxError('"cache" tag got a non-integer timeout value: %r' % expire_time)
     # Build a unicode key for this fragment and all vary-on's.
     args = md5_constructor(u':'.join([urlquote(resolve_variable(var, context)) for var in self.vary_on]))
     cache_key = 'template.cache.%s.%s' % (self.fragment_name, args.hexdigest())
     value = cache.get(cache_key)
     if value is None:
         value = self.nodelist.render(context)
         req = context.get('request', None)
         if req:
             value, dimensions_found = add_dimensions(value, req.build_absolute_uri())
         else:
             dimensions_found = False
         if dimensions_found:
             cache.set(cache_key, value, expire_time)
     return value
 def process_response(self, request, response):
     if "text/html" in response["Content-Type"]:
         path = request.build_absolute_uri()
         response.content, dimensions_found = add_dimensions(response.content, path)
     return response