Source code for oioioi.base.templatetags.menu
from django import template
from django.template import Node, TemplateSyntaxError
from django.utils.module_loading import import_string
from oioioi.base.menu import MenuRegistry, menu_registry
[docs]class GenerateMenuNode(Node):
def __init__(self, registry):
self.registry = registry
[docs] def render(self, context):
request = context['request']
registry = self.registry.resolve(context)
if not registry:
registry = menu_registry
if isinstance(registry, str):
registry = import_string(registry)
if not isinstance(registry, MenuRegistry):
raise TemplateSyntaxError(
"{%% generate_menu %%} got an "
"argument which is not a MenuRegistry: %r" % (registry,)
)
context['menu'] = registry.template_context(request)
return ''
@register.tag