def render(self, context):
     try:
         value = resolve_variable_with_filters(self.val_var, context)
         maxvalue = resolve_variable_with_filters(self.max_var, context)
     except VariableDoesNotExist:
         return ''
     try:
         value = float(value)
         maxvalue = float(maxvalue)
         ratio = (value / maxvalue) * int(self.max_width)
     except (ValueError, ZeroDivisionError):
         return ''
     return str(int(round(ratio)))
Example #2
0
 def render(self, context):
     context.push()
     for var,val in self.extra_context.items():
         context[var] = resolve_variable_with_filters(val, context)
     singular = self.render_token_list(self.singular)
     if self.plural and self.countervar and self.counter:
         count = resolve_variable_with_filters(self.counter, context)
         context[self.countervar] = count
         plural = self.render_token_list(self.plural)
         result = translation.ngettext(singular, plural, count) % context
     else:
         result = translation.gettext(singular) % context
     context.pop()
     return result
 def render(self, context):
     obj_list = resolve_variable_with_filters(self.target_var, context)
     if obj_list == '': # target_var wasn't found in context; fail silently
         context[self.var_name] = []
         return ''
     output = [] # list of dictionaries in the format {'grouper': 'key', 'list': [list of contents]}
     for obj in obj_list:
         grouper = resolve_variable_with_filters('var.%s' % self.expression, \
             Context({'var': obj}))
         if output and repr(output[-1]['grouper']) == repr(grouper):
             output[-1]['list'].append(obj)
         else:
             output.append({'grouper': grouper, 'list': [obj]})
     context[self.var_name] = output
     return ''
 def render(self, context):
     for ifnot, boolvar in self.boolvars:
         try:
             value = resolve_variable_with_filters(boolvar, context)
         except VariableDoesNotExist:
             value = None
         if (value and not ifnot) or (ifnot and not value):
             return self.nodelist_true.render(context)
     return self.nodelist_false.render(context)
Example #5
0
 def get_parent(self, context):
     if self.parent_name_var:
         self.parent_name = resolve_variable_with_filters(self.parent_name_var, context)
     parent = self.parent_name
     if not parent:
         error_msg = "Invalid template name in 'extends' tag: %r." % parent
         if self.parent_name_var:
             error_msg += " Got this from the %r variable." % self.parent_name_var
         raise TemplateSyntaxError, error_msg
     try:
         return get_template_from_string(load_template_source(parent, self.template_dirs))
     except TemplateDoesNotExist:
         raise TemplateSyntaxError, "Template %r cannot be extended, because it doesn't exist" % parent
 def render(self, context):
     nodelist = NodeList()
     if context.has_key('forloop'):
         parentloop = context['forloop']
     else:
         parentloop = {}
     context.push()
     try:
         values = resolve_variable_with_filters(self.sequence, context)
     except VariableDoesNotExist:
         values = []
     if values is None:
         values = []
     len_values = len(values)
     if self.reversed:
         # From http://www.python.org/doc/current/tut/node11.html
         def reverse(data):
             for index in range(len(data)-1, -1, -1):
                 yield data[index]
         values = reverse(values)
     for i, item in enumerate(values):
         context['forloop'] = {
             # shortcuts for current loop iteration number
             'counter0': i,
             'counter': i+1,
             # reverse counter iteration numbers
             'revcounter': len_values - i,
             'revcounter0': len_values - i - 1,
             # boolean values designating first and last times through loop
             'first': (i == 0),
             'last': (i == len_values - 1),
             'parentloop': parentloop,
         }
         context[self.loopvar] = item
         for node in self.nodelist_loop:
             nodelist.append(node.render(context))
     context.pop()
     return nodelist.render(context)