diff --git a/modoboa/lib/parameters.py b/modoboa/lib/parameters.py index b68ad73e9..7dd2998ab 100644 --- a/modoboa/lib/parameters.py +++ b/modoboa/lib/parameters.py @@ -145,9 +145,8 @@ def register(formclass, label): ``UserParametersForm``. :param formclass: a form class - :param label: + :param string label: the label to display in parameters or settings pages """ - from models import Parameter from modoboa.lib.formutils import SeparatorField if issubclass(formclass, AdminParametersForm): @@ -285,18 +284,33 @@ def get_user(user, name, app=None): return p.value.decode("unicode_escape") +def get_sorted_apps(level, first="admin"): + sorted_apps = [first] + sorted_apps += sorted( + [app for app in _params[level].keys() if app != first], + key=lambda app: _params[level][app]["label"] + ) + return sorted_apps + + def get_admin_forms(*args, **kwargs): - for formdef in _params['A'].values(): - yield {"label": formdef["label"], "form": formdef["form"](*args, **kwargs)} + for app in get_sorted_apps('A'): + formdef = _params['A'][app] + yield {"label": formdef["label"], + "form": formdef["form"](*args, **kwargs)} def get_user_forms(user, *args, **kwargs): kwargs["user"] = user + sorted_apps = get_sorted_apps('U', first="general") + def realfunc(): - for formdef in _params['U'].values(): + for app in sorted_apps: + formdef = _params['U'][app] if not formdef["form"].has_access(user): continue - yield {"label": formdef["label"], "form": formdef["form"](*args, **kwargs)} + yield {"label": formdef["label"], + "form": formdef["form"](*args, **kwargs)} return realfunc diff --git a/modoboa/urls.py b/modoboa/urls.py index a51ca681e..36c376ea5 100644 --- a/modoboa/urls.py +++ b/modoboa/urls.py @@ -3,7 +3,6 @@ from django.conf import settings from modoboa.extensions import * from modoboa.lib import parameters -parameters.apply_to_django_settings() urlpatterns = patterns('', (r'^$', 'modoboa.lib.webutils.topredirection'), @@ -14,6 +13,8 @@ urlpatterns = patterns('', *exts_pool.load_all() ) +parameters.apply_to_django_settings() + if 'modoboa.demo' in settings.INSTALLED_APPS: urlpatterns += patterns('', (r'^demo/', include('modoboa.demo.urls'))