1 from django import template
2 from django.conf import settings
3 from forum.modules import ui
6 register = template.Library()
9 class LoadRegistryNode(template.Node):
10 def __init__(self, registry, separator):
11 self.registry = registry
12 self.separator = separator
14 def render(self, context):
15 separator = self.separator.render(context)
18 for ui_object in self.registry:
20 if ui_object.can_render(context):
23 result += ui_object.render(context)
24 except (KeyError, Exception), e:
27 logging.error("Exception %s rendering ui objects %s: \n%s" % (
28 e, ui_object, traceback.format_exc()
35 def loadregistry(parser, token):
37 tag_name, registry = token.split_contents()
39 raise template.TemplateSyntaxError, "%r tag requires exactly one argument" % token.contents.split()[0]
41 registry = ui.get_registry_by_name(registry)
42 separator = parser.parse(('endloadregistry',))
43 parser.delete_first_token()
44 return LoadRegistryNode(registry, separator)
47 class LoopRegistryNode(template.Node):
48 def __init__(self, registry, nodelist):
49 self.registry = registry
50 self.nodelist = nodelist
52 def render(self, context):
55 for ui_object in self.registry:
56 if ui_object.can_render(context):
58 ui_object.update_context(context)
59 result += self.nodelist.render(context)
62 logging.error("Exception %s updating ui loop context %s: \n%s" % (
63 e, ui_object, traceback.format_exc()
70 def loopregistry(parser, token):
72 tag_name, registry = token.split_contents()
74 raise template.TemplateSyntaxError, "%r tag requires exactly one argument" % token.contents.split()[0]
76 registry = ui.get_registry_by_name(registry)
77 nodelist = parser.parse(('endloopregistry',))
78 parser.delete_first_token()
80 return LoopRegistryNode(registry, nodelist)