From now, users can store their own "preferences" inside MailNG.
This commit is contained in:
tonio
2010-06-09 15:58:46 +02:00
parent 59fddd81d8
commit 1c35ce5757
32 changed files with 351 additions and 152 deletions
+14 -14
View File
@@ -3,17 +3,17 @@
from mailng.lib import parameters
from django.utils.translation import ugettext as _
parameters.register("admin","STORAGE_PATH", "string", "/var/vmail",
help=_("Path to the root directory where messages are stored"))
parameters.register("admin", "VIRTUAL_UID", "string", "vmail",
help=_("UID of the virtual user which owns domains/mailboxes/messages on the filesystem"))
parameters.register("admin", "VIRTUAL_GID", "string", "vmail",
help=_("GID of the virtual user which owns domains/mailboxes/messages on the filesystem"))
parameters.register("admin", "MAILBOX_TYPE", "list", "maildir",
values=[("maildir", "maildir"), ("mbox", "mbox")],
help=_("Mailboxes storage format"))
parameters.register("admin", "MAILDIR_ROOT", "string", ".maildir",
help=_("Sub-directory (inside the mailbox) where messages are stored when using the maildir format"))
parameters.register("admin", "PASSWORD_SCHEME", "list", "crypt",
values=[("crypt", "crypt"), ("md5", "md5"), ("clear", "clear")],
help=_("Scheme used to crypt mailbox passwords"))
parameters.register_admin("admin","STORAGE_PATH", type="string", deflt="/var/vmail",
help=_("Path to the root directory where messages are stored"))
parameters.register_admin("admin", "VIRTUAL_UID", type="string", deflt="vmail",
help=_("UID of the virtual user which owns domains/mailboxes/messages on the filesystem"))
parameters.register_admin("admin", "VIRTUAL_GID", type="string", deflt="vmail",
help=_("GID of the virtual user which owns domains/mailboxes/messages on the filesystem"))
parameters.register_admin("admin", "MAILBOX_TYPE", type="list", deflt="maildir",
values=[("maildir", "maildir"), ("mbox", "mbox")],
help=_("Mailboxes storage format"))
parameters.register_admin("admin", "MAILDIR_ROOT", type="string", deflt=".maildir",
help=_("Sub-directory (inside the mailbox) where messages are stored when using the maildir format"))
parameters.register_admin("admin", "PASSWORD_SCHEME", type="list", deflt="crypt",
values=[("crypt", "crypt"), ("md5", "md5"), ("clear", "clear")],
help=_("Scheme used to crypt mailbox passwords"))
+8 -8
View File
@@ -19,17 +19,17 @@ class Domain(models.Model):
)
def create_dir(self):
path = "%s/%s" % (parameters.get("admin", "STORAGE_PATH"), self.name)
path = "%s/%s" % (parameters.get_admin("admin", "STORAGE_PATH"), self.name)
return exec_as_vuser("mkdir -p %s" % path)
def rename_dir(self, newname):
stpath = parameters.get("admin", "STORAGE_PATH")
stpath = parameters.get_admin("admin", "STORAGE_PATH")
return exec_as_vuser("mv %s/%s %s/%s" \
% (stpath, self.name, stpath, newname))
def delete_dir(self):
return exec_as_vuser("rm -r %s/%s" \
% (parameters.get("admin", "STORAGE_PATH"),
% (parameters.get_admin("admin", "STORAGE_PATH"),
self.name))
def __str__(self):
@@ -57,14 +57,14 @@ class Mailbox(models.Model):
def __init__(self, *args, **kwargs):
super(Mailbox, self).__init__(*args, **kwargs)
self.mbtype = parameters.get("admin", "MAILBOX_TYPE")
self.mdirroot = parameters.get("admin", "MAILDIR_ROOT")
self.mbtype = parameters.get_admin("admin", "MAILBOX_TYPE")
self.mdirroot = parameters.get_admin("admin", "MAILDIR_ROOT")
def __str__(self):
return "%s" % (self.address)
def create_dir(self, domain):
path = "%s/%s/%s" % (parameters.get("admin", "STORAGE_PATH"),
path = "%s/%s/%s" % (parameters.get_admin("admin", "STORAGE_PATH"),
domain.name, self.address)
if os.path.exists(path):
return True
@@ -86,7 +86,7 @@ class Mailbox(models.Model):
return True
def rename_dir(self, domain, newaddress):
path = "%s/%s" % (parameters.get("admin", "STORAGE_PATH"), domain)
path = "%s/%s" % (parameters.get_admin("admin", "STORAGE_PATH"), domain)
code = exec_as_vuser("mv %s/%s %s/%s" \
% (path, self.address, path, newaddress))
if code:
@@ -95,7 +95,7 @@ class Mailbox(models.Model):
def delete_dir(self):
return exec_as_vuser("rm -r %s/%s/%s" \
% (parameters.get("admin", "STORAGE_PATH"),
% (parameters.get_admin("admin", "STORAGE_PATH"),
self.domain.name, self.address))
class Alias(models.Model):
+11 -10
View File
@@ -179,8 +179,8 @@ def newmailbox(request, dom_id=None):
mb.password = crypt_password(request.POST["password1"])
mb.uid = pwd.getpwnam(parameters.get("admin", "VIRTUAL_UID")).pw_uid
mb.gid = pwd.getpwnam(parameters.get("admin", "VIRTUAL_GID")).pw_gid
mb.uid = pwd.getpwnam(parameters.get_admin("admin", "VIRTUAL_UID")).pw_uid
mb.gid = pwd.getpwnam(parameters.get_admin("admin", "VIRTUAL_GID")).pw_gid
mb.domain = domain
mb.quota = request.POST["quota"]
if not mb.quota:
@@ -415,14 +415,15 @@ def viewparameters(request):
gparams = []
for app in apps:
tmp = {"name" : app, "params" : []}
for p in sorted(parameters._params[app]):
for p in sorted(parameters._params[app]['A']):
param_def = parameters._params[app]['A'][p]
newdef = {"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"]}
if "values" in parameters._params[app][p].keys():
newdef["values"] = parameters._params[app][p]["values"]
"value" : parameters.get_admin(app, p),
"help" : param_def["help"],
"default" : param_def["default"],
"type" : param_def["type"]}
if "values" in param_def.keys():
newdef["values"] = param_def["values"]
tmp["params"] += [newdef]
gparams += [tmp]
@@ -437,6 +438,6 @@ def saveparameters(request):
if pname == "update":
continue
app, name = pname.split('.')
parameters.save(app, name, v)
parameters.save_admin(app, name, v)
request.user.message_set.create(message=_("Configuration saved."))
return HttpResponseRedirect(reverse(admin.views.viewparameters))