diff --git a/modoboa/core/templatetags/core_tags.py b/modoboa/core/templatetags/core_tags.py index 3fe55b895..1c7933ed9 100644 --- a/modoboa/core/templatetags/core_tags.py +++ b/modoboa/core/templatetags/core_tags.py @@ -11,21 +11,8 @@ register = template.Library() @register.simple_tag def core_menu(selection, user): - entries = [] - # if user.has_perm("admin.view_domains"): - # entries += [ - # {"name" : "domains", - # "url" : reverse("modoboa.admin.views.domains"), - # "label" : _("Domains")} - # ] - entries += \ + entries = \ events.raiseQueryEvent("AdminMenuDisplay", "top_menu", user) - # if user.has_perm("admin.add_user") or user.has_perm("admin.add_alias"): - # entries += [ - # {"name" : "identities", - # "url" : reverse("modoboa.admin.views.identities"), - # "label" : _("Identities")}, - # ] if user.is_superuser: entries += [ {"name": "settings", diff --git a/modoboa/extensions/admin/__init__.py b/modoboa/extensions/admin/__init__.py index dfe89d830..fc229ab81 100644 --- a/modoboa/extensions/admin/__init__.py +++ b/modoboa/extensions/admin/__init__.py @@ -1,5 +1,6 @@ # coding: utf-8 from django.utils.translation import ugettext as _, ugettext_lazy +from django.core.urlresolvers import reverse from modoboa.core.extensions import ModoExtension, exts_pool from modoboa.lib import parameters, events @@ -19,3 +20,25 @@ class AdminConsole(ModoExtension): parameters.unregister() exts_pool.register_extension(AdminConsole, show=False) + + +@events.observe("AdminMenuDisplay") +def menu(target, user): + if target != "top_menu": + print "rien" + return [] + entries = [] + if user.has_perm("admin.view_domains"): + entries += [ + {"name" : "domains", + "url" : reverse("modoboa.extensions.admin.views.domain.domains"), + "label" : _("Domains")} + ] + if user.has_perm("admin.add_user") or user.has_perm("admin.add_alias"): + entries += [ + {"name" : "identities", + "url" : reverse("modoboa.extensions.admin.views.identity.identities"), + "label" : _("Identities")}, + ] + print entries + return entries diff --git a/modoboa/lib/events.py b/modoboa/lib/events.py index e3dc37fd4..ee3a81b8d 100644 --- a/modoboa/lib/events.py +++ b/modoboa/lib/events.py @@ -127,14 +127,18 @@ class observe(object): @wraps(f) def wrapped_f(*args): if extname: - from modoboa.admin.models import Extension + from modoboa.core.models import Extension + from modoboa.core.extensions import exts_pool try: ext = Extension.objects.get(name=extname) except Extension.DoesNotExist: - return [] - if not ext.enabled: - return [] - elif not modname in settings.INSTALLED_APPS: + extdef = exts_pool.get_extension(extname) + if not extdef.always_active: + return [] + else: + if not ext.enabled: + return [] + elif not modname in settings.MODOBOA_APPS: return [] return f(*args)