Support named links, add templatetags to get menus, links and resolve them.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -293,10 +293,20 @@ class Menu(object):
|
||||
|
||||
|
||||
class Link(object):
|
||||
_registry = {}
|
||||
|
||||
@classmethod
|
||||
def get(cls, name):
|
||||
return cls._registry[name]
|
||||
|
||||
@classmethod
|
||||
def remove(cls, name):
|
||||
del cls._registry[name]
|
||||
|
||||
def __init__(self, text, view=None, args=None, condition=None,
|
||||
conditional_disable=None, description=None, html_data=None,
|
||||
html_extra_classes=None, icon=None, icon_class=None,
|
||||
keep_query=False, kwargs=None, permissions=None,
|
||||
keep_query=False, kwargs=None, name=None, permissions=None,
|
||||
permissions_related=None, remove_from_query=None, tags=None,
|
||||
url=None):
|
||||
|
||||
@@ -310,6 +320,7 @@ class Link(object):
|
||||
self.icon_class = icon_class
|
||||
self.keep_query = keep_query
|
||||
self.kwargs = kwargs or {}
|
||||
self.name = name
|
||||
self.permissions = permissions or []
|
||||
self.permissions_related = permissions_related
|
||||
self.remove_from_query = remove_from_query or []
|
||||
@@ -318,6 +329,9 @@ class Link(object):
|
||||
self.view = view
|
||||
self.url = url
|
||||
|
||||
if name:
|
||||
self.__class__._registry[name] = self
|
||||
|
||||
def resolve(self, context, resolved_object=None):
|
||||
AccessControlList = apps.get_model(
|
||||
app_label='acls', model_name='AccessControlList'
|
||||
|
||||
@@ -2,12 +2,22 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.template import Library
|
||||
|
||||
from ..classes import Menu, SourceColumn
|
||||
from ..classes import Link, Menu, SourceColumn
|
||||
from ..forms import MultiItemForm
|
||||
|
||||
register = Library()
|
||||
|
||||
|
||||
@register.simple_tag()
|
||||
def get_link(name):
|
||||
return Link.get(name)
|
||||
|
||||
|
||||
@register.simple_tag()
|
||||
def get_menu(name):
|
||||
return Menu.get(name)
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def get_menu_links(context, name, source=None, sort_results=None):
|
||||
return Menu.get(name).resolve(context=context, source=source, sort_results=sort_results)
|
||||
@@ -60,6 +70,12 @@ def get_source_columns(source):
|
||||
return SourceColumn.get_for_source(source)
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def resolve_link(context, link):
|
||||
# This can be used to resolve links or menus too
|
||||
return link.resolve(context=context)
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def source_column_resolve(context, column):
|
||||
context['column_result'] = column.resolve(context=context)
|
||||
|
||||
Reference in New Issue
Block a user