mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
+1
-19
@@ -481,28 +481,10 @@ def viewsettings(request, tplname='admin/settings_header.html'):
|
||||
@login_required
|
||||
@user_passes_test(lambda u: u.is_superuser)
|
||||
def viewparameters(request, tplname='admin/parameters.html'):
|
||||
apps = sorted(parameters._params.keys())
|
||||
gparams = []
|
||||
for app in apps:
|
||||
tmp = {"name" : app, "params" : []}
|
||||
for p in parameters._params_order[app]['A']:
|
||||
|
||||
param_def = parameters._params[app]['A'][p]
|
||||
newdef = {"name" : p,
|
||||
"value" : parameters.get_admin(p, app=app),
|
||||
"help" : param_def["help"],
|
||||
"default" : param_def["deflt"],
|
||||
"type" : param_def["type"]}
|
||||
for k in ["values", "visible_if"]:
|
||||
if k in param_def.keys():
|
||||
newdef[k] = param_def[k]
|
||||
tmp["params"] += [newdef]
|
||||
gparams += [tmp]
|
||||
|
||||
return ajax_simple_response({
|
||||
"status" : "ok",
|
||||
"left_selection" : "parameters",
|
||||
"content" : render_to_string(tplname, {"gparams" : gparams})
|
||||
"content" : render_to_string(tplname, {"gparams" : parameters.get_all_admin_parameters()})
|
||||
})
|
||||
|
||||
@login_required
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# coding: utf-8
|
||||
|
||||
import string
|
||||
import inspect
|
||||
import re
|
||||
import copy
|
||||
|
||||
"""
|
||||
This interface provides a simple way to declare and store parameters
|
||||
@@ -211,6 +212,24 @@ def get_admin(name, app=None):
|
||||
return _params[app]["A"][name]["deflt"]
|
||||
return p.value.decode("unicode_escape")
|
||||
|
||||
def get_all_admin_parameters():
|
||||
"""Retrieve all administrative parameters
|
||||
|
||||
Returned parameters are sorted by application
|
||||
|
||||
:return: a list of dictionaries
|
||||
"""
|
||||
result = []
|
||||
for app in sorted(_params.keys()):
|
||||
tmp = {"name" : app, "params" : []}
|
||||
for p in _params_order[app]['A']:
|
||||
newdef = copy.deepcopy(_params[app]['A'][p])
|
||||
newdef["name"] = p
|
||||
newdef["value"] = get_admin(p, app=app)
|
||||
tmp["params"] += [newdef]
|
||||
result += [tmp]
|
||||
return result
|
||||
|
||||
def get_user(user, name, app=None):
|
||||
from models import UserParameter
|
||||
|
||||
@@ -223,7 +242,42 @@ def get_user(user, name, app=None):
|
||||
return _params[app]["U"][name]["deflt"]
|
||||
return p.value.decode("unicode_escape")
|
||||
|
||||
def get_all_user_params(user):
|
||||
"""Retrieve all the parameters of the given user
|
||||
|
||||
Returned parameters are sorted by application.
|
||||
|
||||
:param user: a ``User`` object
|
||||
:return: a list of dictionaries
|
||||
"""
|
||||
result = []
|
||||
for app in sorted(_params.keys()):
|
||||
if not len(_params[app]['U']):
|
||||
continue
|
||||
if get_app_option('U', 'needs_mailbox', False, app=app) \
|
||||
and not user.has_mailbox:
|
||||
continue
|
||||
tmp = {"name" : app, "params" : []}
|
||||
for p in _params_order[app]['U']:
|
||||
param_def = _params[app]['U'][p]
|
||||
newdef = copy.deepcopy(param_def)
|
||||
newdef["name"] = p
|
||||
newdef["value"] = get_user(user, p, app=app)
|
||||
tmp["params"] += [newdef]
|
||||
result += [tmp]
|
||||
return result
|
||||
|
||||
def get_app_option(lvl, name, dflt, app=None):
|
||||
"""Retrieve a specific option for a given application
|
||||
|
||||
If the option is not found, a default value is returned.
|
||||
|
||||
:param lvl: the option's level (U or A)
|
||||
:param name: the option's name
|
||||
:param dflt: the default value to return
|
||||
:param app: the application name
|
||||
:return: the option's value
|
||||
"""
|
||||
if app is None:
|
||||
app = __guess_extension()
|
||||
if not lvl in _params[app]['options']:
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# coding: utf-8
|
||||
import copy
|
||||
from django.shortcuts import render
|
||||
from django.template.loader import render_to_string
|
||||
from django.core.urlresolvers import reverse
|
||||
@@ -118,27 +117,9 @@ def preferences(request):
|
||||
status="ok", respmsg=_("Preferences saved")
|
||||
))
|
||||
|
||||
apps = sorted(parameters._params.keys())
|
||||
gparams = []
|
||||
for app in apps:
|
||||
if not len(parameters._params[app]['U']):
|
||||
continue
|
||||
if parameters.get_app_option('U', 'needs_mailbox', False, app=app) \
|
||||
and not request.user.has_mailbox:
|
||||
continue
|
||||
|
||||
tmp = {"name" : app, "params" : []}
|
||||
for p in parameters._params_order[app]['U']:
|
||||
param_def = parameters._params[app]['U'][p]
|
||||
newdef = copy.deepcopy(param_def)
|
||||
newdef["name"] = p
|
||||
newdef["value"] = parameters.get_user(request.user, p, app=app)
|
||||
tmp["params"] += [newdef]
|
||||
gparams += [tmp]
|
||||
|
||||
return ajax_simple_response({
|
||||
"status" : "ok",
|
||||
"content" : render_to_string("userprefs/preferences.html", {
|
||||
"gparams" : gparams
|
||||
"gparams" : parameters.get_all_user_params(request.user)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user