mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-21 06:18:45 +02:00
fix: return receipts are now displayed correctly.
new: parameters module refactored. The API is more simple now, there is no need to provide a module name anymore, this last is automatically guessed. Also, a new 'label' field can be provide when declaring a new parameter. It will be used instead of the name. new: email parsing refactored. My first attempt was really ugly. I did not really studied the various RFC describing how messages are formatted or what IMAP fetch queries can do. Now, I hope this new code will face better unknown types. At least, It will be simpler to update.
This commit is contained in:
+6
-6
@@ -3,17 +3,17 @@
|
||||
from modoboa.lib import parameters
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
parameters.register_admin("admin","STORAGE_PATH", type="string", deflt="/var/vmail",
|
||||
parameters.register_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",
|
||||
parameters.register_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",
|
||||
parameters.register_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",
|
||||
parameters.register_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",
|
||||
parameters.register_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",
|
||||
parameters.register_admin("PASSWORD_SCHEME", type="list", deflt="crypt",
|
||||
values=[("crypt", "crypt"), ("md5", "md5"), ("clear", "clear")],
|
||||
help=_("Scheme used to crypt mailbox passwords"))
|
||||
|
||||
+8
-8
@@ -19,17 +19,17 @@ class Domain(models.Model):
|
||||
)
|
||||
|
||||
def create_dir(self):
|
||||
path = "%s/%s" % (parameters.get_admin("admin", "STORAGE_PATH"), self.name)
|
||||
path = "%s/%s" % (parameters.get_admin("STORAGE_PATH"), self.name)
|
||||
return exec_as_vuser("mkdir -p %s" % path)
|
||||
|
||||
def rename_dir(self, newname):
|
||||
stpath = parameters.get_admin("admin", "STORAGE_PATH")
|
||||
stpath = parameters.get_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("admin", "STORAGE_PATH"),
|
||||
% (parameters.get_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("admin", "MAILBOX_TYPE")
|
||||
self.mdirroot = parameters.get_admin("admin", "MAILDIR_ROOT")
|
||||
self.mbtype = parameters.get_admin("MAILBOX_TYPE")
|
||||
self.mdirroot = parameters.get_admin("MAILDIR_ROOT")
|
||||
|
||||
def __str__(self):
|
||||
return "%s" % (self.address)
|
||||
|
||||
def create_dir(self, domain):
|
||||
path = "%s/%s/%s" % (parameters.get_admin("admin", "STORAGE_PATH"),
|
||||
path = "%s/%s/%s" % (parameters.get_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("admin", "STORAGE_PATH"), domain)
|
||||
path = "%s/%s" % (parameters.get_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("admin", "STORAGE_PATH"),
|
||||
% (parameters.get_admin("STORAGE_PATH"),
|
||||
self.domain.name, self.address))
|
||||
|
||||
class Alias(models.Model):
|
||||
|
||||
@@ -97,10 +97,11 @@ def loadadminextmenu(user):
|
||||
@register.simple_tag
|
||||
def param(app, definition):
|
||||
result = """<div class='row'>
|
||||
<label>%s</label>""" % definition["name"]
|
||||
<label>%s</label>""" % (definition.has_key("label") \
|
||||
and definition["label"] or definition["name"])
|
||||
name = "%s.%s" % (app, definition["name"])
|
||||
value = definition.has_key("value") \
|
||||
and definition["value"] or definition["default"]
|
||||
and definition["value"] or definition["deflt"]
|
||||
|
||||
if definition["type"] in ["string", "int"]:
|
||||
result += """
|
||||
|
||||
+5
-5
@@ -182,8 +182,8 @@ def newmailbox(request, dom_id=None):
|
||||
|
||||
mb.password = crypt_password(request.POST["password1"])
|
||||
|
||||
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.uid = pwd.getpwnam(parameters.get_admin("VIRTUAL_UID")).pw_uid
|
||||
mb.gid = pwd.getpwnam(parameters.get_admin("VIRTUAL_GID")).pw_gid
|
||||
mb.domain = domain
|
||||
mb.quota = request.POST["quota"]
|
||||
if not mb.quota:
|
||||
@@ -422,9 +422,9 @@ def viewparameters(request):
|
||||
for p in sorted(parameters._params[app]['A']):
|
||||
param_def = parameters._params[app]['A'][p]
|
||||
newdef = {"name" : p,
|
||||
"value" : parameters.get_admin(app, p),
|
||||
"value" : parameters.get_admin(p, app=app),
|
||||
"help" : param_def["help"],
|
||||
"default" : param_def["default"],
|
||||
"default" : param_def["deflt"],
|
||||
"type" : param_def["type"]}
|
||||
if "values" in param_def.keys():
|
||||
newdef["values"] = param_def["values"]
|
||||
@@ -442,6 +442,6 @@ def saveparameters(request):
|
||||
if pname == "update":
|
||||
continue
|
||||
app, name = pname.split('.')
|
||||
parameters.save_admin(app, name, v)
|
||||
parameters.save_admin(name, v, app=app)
|
||||
ctx = getctx("ok")
|
||||
return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
|
||||
|
||||
Reference in New Issue
Block a user