This commit is contained in:
tonio
2010-04-12 10:05:58 +02:00
100 changed files with 7068 additions and 614 deletions
+4
View File
@@ -115,3 +115,7 @@ class Alias(models.Model):
permissions = (
("view_aliases", "View aliases"),
)
class Parameter(models.Model):
name = models.CharField(max_length=255)
value = models.CharField(max_length=255)
+74 -3
View File
@@ -46,9 +46,40 @@ def domain_menu(domain_id, selection, perms):
"perms" : perms})
@register.simple_tag
def settings_menu(selection):
return render_to_string('admin/settings_menu.html',
{"selection" : selection})
def settings_menu(selection, perms):
entries = [
{"name" : "permissions",
"url" : reverse(admin.views.settings),
"label" : _("Permissions"),
"img" : "/static/pics/permissions.png"},
{"name" : "addperm",
"url" : reverse(admin.views.addpermission),
"img" : "/static/pics/add.png",
"label" : _("Add permission"),
"class" : "boxed",
"rel" : "{handler:'iframe',size:{x:320,y:210}}"},
{"name" : "parameters",
"url" : reverse(admin.views.viewparameters),
"img" : "/static/pics/domains.png",
"label" : _("Parameters")},
]
return render_to_string('main/menu.html',
{"selection" : selection, "entries" : entries,
"perms" : perms})
@register.simple_tag
def domains_menu(selection, perms):
entries = [
{"name" : "domains",
"url" : reverse(admin.views.domains),
"label" : _("Domains"),
"img" : "/static/pics/domains.png"}
]
entries += events.raiseQueryEvent("AdminMenuDisplay", target="admin_menu_box",
perms=perms)
return render_to_string('main/menulist.html',
{"menu" : entries, "selection" : selection,
"perms" : perms})
@register.simple_tag
def loadadminextmenu(perms):
@@ -57,6 +88,46 @@ def loadadminextmenu(perms):
return render_to_string('main/menulist.html',
{"menu" : menu, "perms" : perms})
@register.simple_tag
def param(app, definition):
result = """<div class='row'>
<label>%s</label>""" % definition["name"]
name = "%s.%s" % (app, definition["name"])
if definition["type"] in ["string", "int"]:
value = definition.has_key("value") \
and definition["value"] or definition["default"]
result += """
<input type='text' name='%s' id='%s' value='%s' />""" % (name, name, value)
if definition["type"] in ["list", "list_yesno"]:
result += """
<select name='%s' id='%s'>""" % (name, name)
values = []
if definition["type"] == "list_yesno":
values = [("yes", _("Yes")), ("no", _("No"))]
else:
if definition.has_key("values"):
values = definition["values"]
value = definition.has_key("value") \
and definition["value"] or definition["default"]
for v in values:
selected = ""
if value == v[0]:
selected = " selected='selected'"
result += "<option value='%s'%s>%s</option>\n" % (v[0], selected, v[1])
result += """
</select>
"""
if definition.has_key("help"):
result += """
<a href='%s' onclick='return false;' class='Tips' title='%s'>
<img src='/static/pics/info.png' border='0' />
</a>""" % (definition["help"], _("Help"))
result += """
</div>
"""
return result
@register.filter
def gender(value, target):
if genders.has_key(value):
+3 -1
View File
@@ -18,5 +18,7 @@ urlpatterns = patterns('mailng.admin.views',
(r'^domains/(?P<dom_id>\d+)/delalias/(?P<alias_id>\d+)/$', 'delalias'),
(r'^settings/$', 'settings'),
(r'^settings/addperm/$', 'addpermission'),
(r'^settings/delperm/(?P<mbox_id>\d+)/(?P<group>\w+)/$', 'deletepermission')
(r'^settings/delperm/(?P<mbox_id>\d+)/(?P<group>\w+)/$', 'deletepermission'),
(r'^settings/parameters/$', 'viewparameters'),
(r'^settings/parameters/save/$', 'saveparameters'),
)
+33 -3
View File
@@ -12,11 +12,11 @@ from django.contrib.auth.decorators \
import login_required, permission_required, user_passes_test
from django.contrib.auth.models import User, Group
from mailng import admin, main
from mailng.admin.models import Domain, Mailbox, Alias
from mailng.admin.models import Domain, Mailbox, Alias, Parameter
from forms import MailboxForm, DomainForm, AliasForm, PermissionForm
from mailng.lib.authbackends import crypt_password
from mailng.lib import _render, _ctx_ok, _ctx_ko
from mailng.lib import events
from mailng.lib import events, parameters
import string
import copy
import pwd
@@ -51,7 +51,7 @@ def domains(request):
return mailboxes(request, dom_id=mb.domain.id)
return HttpResponseRedirect(reverse(main.views.index))
domains = Domain.objects.all()
counters = {}
for dom in domains:
@@ -408,3 +408,33 @@ def deletepermission(request, mbox_id, group):
mbox.user.groups.remove(grp)
mbox.user.save()
return HttpResponseRedirect(reverse(admin.views.settings))
@login_required
@user_passes_test(lambda u: u.is_superuser)
def viewparameters(request):
apps = sorted(parameters._params.keys())
gparams = []
for app in apps:
tmp = {"name" : app, "params" : []}
for p in sorted(parameters._params[app]):
tmp["params"] += [{"name" : p,
"value" : parameters.get(app, p),
"help" : parameters._params[app][p]["help"],
"default" : parameters._params[app][p]["default"],
"type" : parameters._params[app][p]["type"]}]
gparams += [tmp]
return _render(request, 'admin/parameters.html', {
"gparams" : gparams
})
@login_required
@user_passes_test(lambda u: u.is_superuser)
def saveparameters(request):
for pname, v in request.POST.iteritems():
if pname == "update":
continue
app, name = pname.split('.')
parameters.save(app, name, v)
request.user.message_set.create(message=_("Configuration saved."))
return HttpResponseRedirect(reverse(admin.views.viewparameters))