mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
74 lines
3.5 KiB
Python
74 lines
3.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from modoboa.lib import parameters, events
|
|
from django.utils.translation import ugettext as _, ugettext_lazy
|
|
from django.db.utils import DatabaseError
|
|
from models import Extension
|
|
|
|
parameters.register_admin("AUTHENTICATION_TYPE", type="list", deflt="local",
|
|
values=[('local', ugettext_lazy("Local")),
|
|
('ldap', "LDAP")],
|
|
help=ugettext_lazy("The backend used for authentication"))
|
|
parameters.register_admin("CREATE_DIRECTORIES", type="list_yesno", deflt="yes",
|
|
help=ugettext_lazy("Modoboa will handle mailbox creation on filesystem"))
|
|
parameters.register_admin("STORAGE_PATH", type="string", deflt="/var/vmail",
|
|
help=ugettext_lazy("Path to the root directory where messages are stored"))
|
|
parameters.register_admin("VIRTUAL_UID", type="string", deflt="vmail",
|
|
help=ugettext_lazy("UID of the virtual user which owns domains/mailboxes/messages on the filesystem"))
|
|
parameters.register_admin("VIRTUAL_GID", type="string", deflt="vmail",
|
|
help=ugettext_lazy("GID of the virtual user which owns domains/mailboxes/messages on the filesystem"))
|
|
parameters.register_admin("MAILBOX_TYPE", type="list", deflt="maildir",
|
|
values=[("maildir", "maildir"), ("mbox", "mbox")],
|
|
help=ugettext_lazy("Mailboxes storage format"))
|
|
parameters.register_admin("MAILDIR_ROOT", type="string", deflt=".maildir",
|
|
help=ugettext_lazy("Sub-directory (inside the mailbox) where messages are stored when using the maildir format"))
|
|
parameters.register_admin(
|
|
"PASSWORD_SCHEME", type="list", deflt="crypt",
|
|
values=[("crypt", "crypt"), ("md5", "md5"), ("sha256", "sha256"), ("clear", "clear")],
|
|
help=ugettext_lazy("Scheme used to crypt mailbox passwords")
|
|
)
|
|
parameters.register_admin("ITEMS_PER_PAGE", type="int", deflt=30,
|
|
help=ugettext_lazy("Number of displayed items per page"))
|
|
|
|
def enabled_applications():
|
|
"""Return the list of currently enabled extensions
|
|
|
|
Quick fix for #184:
|
|
|
|
Just catch the DatabaseError exception raised when runnning the
|
|
first ``syncdb`` command.
|
|
|
|
:return: a list
|
|
"""
|
|
result = [("admin", "admin"), ("userprefs", "userprefs")]
|
|
try:
|
|
exts = list(Extension.objects.filter(enabled=True))
|
|
except DatabaseError:
|
|
exts = []
|
|
result += map(lambda ext: (ext.name, ext.name), exts)
|
|
return sorted(result)
|
|
|
|
parameters.register_admin("DEFAULT_TOP_REDIRECTION", type="list", deflt="admin",
|
|
app="general",
|
|
values=enabled_applications(),
|
|
help=ugettext_lazy("The default redirection used when no application is specified"))
|
|
|
|
@events.observe("ExtDisabled")
|
|
def unset_default_topredirection(extension):
|
|
"""
|
|
Simple callback to change the default redirection if the
|
|
corresponding extension is being disabled.
|
|
"""
|
|
topredirection = parameters.get_admin("DEFAULT_TOP_REDIRECTION", app="general")
|
|
if topredirection == extension.name:
|
|
parameters.save_admin("DEFAULT_TOP_REDIRECTION", "userprefs", app="general")
|
|
|
|
@events.observe("ExtDisabled", "ExtEnabled")
|
|
def update_available_applications(extension):
|
|
"""Simple callback to update the list of available applications
|
|
|
|
Must be called each time an extension is disabled/enabled.
|
|
"""
|
|
parameters.update_admin("DEFAULT_TOP_REDIRECTION", app="general",
|
|
values=enabled_applications())
|