mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
Display parameter forms always in the same order.
Don't try to apply settings before the forms are loaded. fixes #392
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
+2
-1
@@ -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'))
|
||||
|
||||
Reference in New Issue
Block a user