diff --git a/mayan/apps/common/classes.py b/mayan/apps/common/classes.py index df51e0d376..4fb01d844a 100644 --- a/mayan/apps/common/classes.py +++ b/mayan/apps/common/classes.py @@ -1,10 +1,48 @@ from __future__ import unicode_literals from django.apps import apps +from django.core.urlresolvers import reverse from django.db import models from django.utils.translation import ugettext +class Collection(object): + _registry = [] + + @classmethod + def get_all(cls): + return sorted(cls._registry, key=lambda entry: entry._order) + + def __init__(self, label, icon=None, link=None, queryset=None, model=None, order=None): + self._label = label + self._icon = icon + self._link = link + self._queryset = queryset + self._model = model + self._order = order or 99 + self.__class__._registry.append(self) + + def __unicode__(self): + return unicode(self.label) + + def resolve(self): + self.children = self._get_children() + self.icon = self._icon + self.label = self._label + self.url = None + if self._link: + self.icon = getattr(self._link, 'icon', self._icon) + self.url = reverse(viewname=self._link.view, args=self._link.args) + return '' + + def _get_children(self): + if self._queryset: + return self._queryset + else: + if self._model: + return self._model.objects.all() + + class DashboardWidget(object): _registry = [] diff --git a/mayan/apps/common/templatetags/common_tags.py b/mayan/apps/common/templatetags/common_tags.py index ba749b036e..3361a6790f 100644 --- a/mayan/apps/common/templatetags/common_tags.py +++ b/mayan/apps/common/templatetags/common_tags.py @@ -10,7 +10,7 @@ from django.template.loader import get_template import mayan -from ..classes import DashboardWidget +from ..classes import Collection, DashboardWidget from ..utils import return_attrib register = Library() @@ -23,6 +23,10 @@ except sh.CommandNotFound: DATE = None +def get_collections(): + return Collection.get_all() + + @register.assignment_tag def get_dashboard_widgets(): return DashboardWidget.get_all()