Esempio n. 1
0
class CacheNode(Node):
    def __init__(self, nodelist, expire_time_var, fragment_name, vary_on):
        self.nodelist = nodelist
        self.expire_time_var = Variable(expire_time_var)
        self.fragment_name = fragment_name
        self.vary_on = vary_on

    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(':'.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)
            cache.set(cache_key, value, expire_time)
        return value
Esempio n. 2
0
def dictsort(value, arg):
    """
    Takes a list of dicts, returns that list sorted by the property given in
    the argument.
    """
    var_resolve = Variable(arg).resolve
    decorated = [(var_resolve(item), item) for item in value]
    decorated.sort()
    return [item[1] for item in decorated]
Esempio n. 3
0
class IncludeNode(Node):
    def __init__(self, template_name):
        self.template_name = Variable(template_name)

    def render(self, context):
        try:
            template_name = self.template_name.resolve(context)
            t = get_template(template_name)
            return t.render(context)
        except:
            if settings.TEMPLATE_DEBUG:
                raise
            return ''
Esempio n. 4
0
class IncludeNode(Node):
    def __init__(self, template_name):
        self.template_name = Variable(template_name)

    def render(self, context):
        try:
            template_name = self.template_name.resolve(context)
            t = get_template(template_name)
            return t.render(context)
        except:
            if settings.TEMPLATE_DEBUG:
                raise
            return ''
Esempio n. 5
0
class CacheNode(Node):
    def __init__(self, nodelist, expire_time_var, fragment_name, vary_on):
        self.nodelist = nodelist
        self.expire_time_var = Variable(expire_time_var)
        self.fragment_name = fragment_name
        self.vary_on = vary_on

    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(':'.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)
            cache.set(cache_key, value, expire_time)
        return value
Esempio n. 6
0
 def __init__(self, nodelist, expire_time_var, fragment_name, vary_on):
     self.nodelist = nodelist
     self.expire_time_var = Variable(expire_time_var)
     self.fragment_name = fragment_name
     self.vary_on = vary_on
Esempio n. 7
0
 def __init__(self, template_name):
     self.template_name = Variable(template_name)
Esempio n. 8
0
 def __init__(self, nodelist, expire_time_var, fragment_name, vary_on):
     self.nodelist = nodelist
     self.expire_time_var = Variable(expire_time_var)
     self.fragment_name = fragment_name
     self.vary_on = vary_on
Esempio n. 9
0
 def __init__(self, filter_expression, noop):
     self.noop = noop
     self.filter_expression = filter_expression
     if isinstance(self.filter_expression.var, str):
         self.filter_expression.var = Variable("'%s'" % self.filter_expression.var)
Esempio n. 10
0
 def __init__(self, template_name):
     self.template_name = Variable(template_name)