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