mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Some work about #48. This is far from finished.
This commit is contained in:
@@ -62,6 +62,9 @@ def settings_menu(selection, perms):
|
||||
"url" : reverse(admin.views.viewparameters),
|
||||
"img" : "/static/pics/domains.png",
|
||||
"label" : _("Parameters")},
|
||||
{"name" : "extensions",
|
||||
"url" : reverse(admin.views.viewextensions),
|
||||
"label" : _("Extensions")},
|
||||
]
|
||||
return render_to_string('main/menu.html',
|
||||
{"selection" : selection, "entries" : entries,
|
||||
|
||||
@@ -19,6 +19,7 @@ urlpatterns = patterns('mailng.admin.views',
|
||||
(r'^settings/$', 'settings'),
|
||||
(r'^settings/addperm/$', 'addpermission'),
|
||||
(r'^settings/delperm/(?P<mbox_id>\d+)/(?P<group>\w+)/$', 'deletepermission'),
|
||||
(r'^settings/extensions/$', 'viewextensions'),
|
||||
(r'^settings/parameters/$', 'viewparameters'),
|
||||
(r'^settings/parameters/save/$', 'saveparameters'),
|
||||
)
|
||||
|
||||
@@ -442,3 +442,11 @@ def saveparameters(request):
|
||||
parameters.save(app, name, v)
|
||||
request.user.message_set.create(message=_("Configuration saved."))
|
||||
return HttpResponseRedirect(reverse(admin.views.viewparameters))
|
||||
|
||||
@login_required
|
||||
@user_passes_test(lambda u: u.is_superuser)
|
||||
def viewextensions(request):
|
||||
from mailng.extensions import list_extensions
|
||||
return _render(request, 'admin/extensions.html', {
|
||||
"extensions" : list_extensions()
|
||||
})
|
||||
|
||||
@@ -24,3 +24,22 @@ def loadmenus():
|
||||
continue
|
||||
result += (u,)
|
||||
return result
|
||||
|
||||
def list_extensions():
|
||||
basedir = "extensions"
|
||||
result = []
|
||||
for d in os.listdir(basedir):
|
||||
if not os.path.isdir("%s/%s" % (basedir, d)):
|
||||
continue
|
||||
isvalid = True
|
||||
for f in ['urls.py', 'main.py', '__init__.py']:
|
||||
if not os.path.exists("%s/%s/%s" % (basedir, d, f)):
|
||||
isvalid = False
|
||||
break
|
||||
if isvalid:
|
||||
module = __import__(d, globals(), locals(), ['main'])
|
||||
try:
|
||||
result += [module.main.infos()]
|
||||
except AttributeError:
|
||||
pass
|
||||
return result
|
||||
|
||||
@@ -24,6 +24,13 @@ from templatetags.amextras import *
|
||||
from mailng.lib.email_listing import parse_search_parameters
|
||||
from sql_listing import *
|
||||
|
||||
def infos():
|
||||
return {
|
||||
"name" : "Amavis quarantine",
|
||||
"version" : "1.0",
|
||||
"description" : _("Simple amavis quarantine management tool")
|
||||
}
|
||||
|
||||
def init():
|
||||
events.register("UserMenuDisplay", menu)
|
||||
parameters.register("amavis_quarantine", "MAX_MESSAGES_AGE", "int", 14,
|
||||
|
||||
@@ -25,6 +25,13 @@ graph_list = [{"name" : "traffic", "label" : _("Average normal traffic")},
|
||||
{"name" : "badtraffic", "label" : _("Average bad traffic")},
|
||||
{"name" : "size", "label" : _("Average normal traffic size")}]
|
||||
|
||||
def infos():
|
||||
return {
|
||||
"name" : "Statistics",
|
||||
"version" : "1.0",
|
||||
"description" : _("Graphical statistics about emails traffic using RRDtool")
|
||||
}
|
||||
|
||||
def init():
|
||||
events.register("AdminMenuDisplay", menu)
|
||||
parameters.register("stats", "LOGFILE", "string", "/var/log/mail.log",
|
||||
|
||||
@@ -34,6 +34,13 @@ def init():
|
||||
parameters.register("webmail", "SMTP_SECURED", "list_yesno", "no",
|
||||
help=_("Use a secured connection to access SMTP server"))
|
||||
|
||||
def infos():
|
||||
return {
|
||||
"name" : "Webmail",
|
||||
"version" : "1.0",
|
||||
"description" : _("Simple IMAP webmail")
|
||||
}
|
||||
|
||||
def urls():
|
||||
return (r'^mailng/webmail/',
|
||||
include('mailng.extensions.webmail.urls'))
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{% extends "admin/settings_header.html" %}
|
||||
{% block menu %}
|
||||
{% load admin_extras %}
|
||||
{% settings_menu "extensions" perms %}
|
||||
{% endblock %}
|
||||
{% block setcontent %}
|
||||
{% load i18n %}
|
||||
<table>
|
||||
<tr><th>{% trans "Name" %}</th><th>{% trans "Version" %}</th><th>{% trans "Description" %}</th></tr>
|
||||
{% for ext in extensions %}
|
||||
<tr><td>{{ ext.name }}</td><td>{{ ext.version }}</td><td>{{ ext.description }}</td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user