From 1079cac58968e1a8d07dcf72c5ebb07b19415731 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Tue, 22 May 2012 14:32:56 +0200 Subject: [PATCH] I forgot the 'default top redirection' feature. see #197 --- admin/__init__.py | 4 ++-- admin/models.py | 5 +++-- extensions/__init__.py | 4 ++++ lib/webutils.py | 6 +++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/admin/__init__.py b/admin/__init__.py index b9ead3421..28987a726 100644 --- a/admin/__init__.py +++ b/admin/__init__.py @@ -45,8 +45,8 @@ def enabled_applications(): exts = list(Extension.objects.filter(enabled=True)) except DatabaseError: exts = [] - result += map(lambda ext: (ext.name, ext.name), exts) - return sorted(result) + result += [(ext.name, ext.name) for ext in exts] + return sorted(result, key=lambda e: e[0]) parameters.register_admin("DEFAULT_TOP_REDIRECTION", type="list", deflt="admin", app="general", diff --git a/admin/models.py b/admin/models.py index a5b896535..ae8f469aa 100644 --- a/admin/models.py +++ b/admin/models.py @@ -808,8 +808,9 @@ class Extension(models.Model): def __init__(self, *args, **kwargs): super(Extension, self).__init__(*args, **kwargs) - self.instance = exts_pool.get_extension(self.name) - self.__get_ext_dir() + if self.name: + self.instance = exts_pool.get_extension(self.name) + self.__get_ext_dir() def __get_ext_dir(self): modname = self.instance.__module__ diff --git a/extensions/__init__.py b/extensions/__init__.py index 3b30cfd97..9d82f0420 100644 --- a/extensions/__init__.py +++ b/extensions/__init__.py @@ -46,6 +46,10 @@ class ExtensionsPool(object): self.extensions[name]["instance"] = self.extensions[name]["cls"]() return self.extensions[name]["instance"] + def get_extension_infos(self, name): + instance = self.get_extension(name) + return instance.infos() + def load_all(self, prefix): from modoboa.admin.models import Extension diff --git a/lib/webutils.py b/lib/webutils.py index f432f4c66..44c8a7108 100644 --- a/lib/webutils.py +++ b/lib/webutils.py @@ -148,12 +148,12 @@ def topredirection(request): :param request: a Request object """ from modoboa.lib import parameters - from modoboa.extensions import get_extension_infos + from modoboa.extensions import exts_pool topredir = parameters.get_admin("DEFAULT_TOP_REDIRECTION", app="general") if not topredir in ["admin", "userprefs"]: - infos = get_extension_infos(topredir) - path = infos["url"] + infos = exts_pool.get_extension_infos(topredir) + path = infos["url"] if infos["url"] else infos["name"] else: path = topredir