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:
Roberto Rosario
2018-09-16 21:12:09 -04:00
parent e6eebe11a7
commit 51cf39f4d8
2 changed files with 32 additions and 2 deletions

View File

@@ -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'