End of ticket #26

This commit is contained in:
tonio
2010-04-19 18:28:29 +02:00
parent ffbb054089
commit a49fe36cb0
19 changed files with 114 additions and 161 deletions
+19
View File
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
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"))
+14 -18
View File
@@ -1,8 +1,8 @@
from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from mailng.lib import exec_pipe, exec_as_vuser
from mailng.lib import parameters
from mailng.lib import exec_as_vuser
import os
class Domain(models.Model):
@@ -19,17 +19,18 @@ class Domain(models.Model):
)
def create_dir(self):
path = "%s/%s" % (settings.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", "STORAGE_PATH")
return exec_as_vuser("mv %s/%s %s/%s" \
% (settings.STORAGE_PATH, self.name,
settings.STORAGE_PATH, newname))
% (stpath, self.name, stpath, newname))
def delete_dir(self):
return exec_as_vuser("rm -r %s/%s" \
% (settings.STORAGE_PATH, self.name))
% (parameters.get("admin", "STORAGE_PATH"),
self.name))
def __str__(self):
return self.name
@@ -56,20 +57,15 @@ class Mailbox(models.Model):
def __init__(self, *args, **kwargs):
super(Mailbox, self).__init__(*args, **kwargs)
try:
self.mbtype = getattr(settings, "MAILBOX_TYPE")
except AttributeError:
self.mbtype = "maildir"
try:
self.mdirroot = getattr(settings, "MAILDIR_ROOT")
except AttributeError:
self.mdirroot = ".maildir"
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" % (settings.STORAGE_PATH, domain.name, self.address)
path = "%s/%s/%s" % (parameters.get("admin", "STORAGE_PATH"),
domain.name, self.address)
if os.path.exists(path):
return True
if not exec_as_vuser("mkdir -p %s" % path):
@@ -90,7 +86,7 @@ class Mailbox(models.Model):
return True
def rename_dir(self, domain, newaddress):
path = "%s/%s" % (settings.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:
@@ -99,8 +95,8 @@ class Mailbox(models.Model):
def delete_dir(self):
return exec_as_vuser("rm -r %s/%s/%s" \
% (settings.STORAGE_PATH,
self.domain.name, self.address))
% (parameters.get("admin", "STORAGE_PATH"),
self.domain.name, self.address))
class Alias(models.Model):
address = models.CharField(_('address'), max_length=100,
+9 -2
View File
@@ -70,6 +70,12 @@ def settings_menu(selection, perms):
@register.simple_tag
def domains_menu(selection, perms):
entries = [
{"name" : "newdomain",
"url" : reverse(admin.views.newdomain),
"label" : _("New domain"),
"img" : "/static/pics/add.png",
"class" : "boxed",
"rel" : "{handler:'iframe',size:{x:300,y:200}}"},
{"name" : "domains",
"url" : reverse(admin.views.domains),
"label" : _("Domains"),
@@ -77,8 +83,8 @@ def domains_menu(selection, perms):
]
entries += events.raiseQueryEvent("AdminMenuDisplay", target="admin_menu_box",
perms=perms)
return render_to_string('main/menulist.html',
{"menu" : entries, "selection" : selection,
return render_to_string('main/menu.html',
{"entries" : entries, "selection" : selection,
"perms" : perms})
@register.simple_tag
@@ -109,6 +115,7 @@ def param(app, definition):
values = definition["values"]
value = definition.has_key("value") \
and definition["value"] or definition["default"]
print name, values
for v in values:
selected = ""
if value == v[0]:
+10 -7
View File
@@ -178,8 +178,8 @@ def newmailbox(request, dom_id=None):
mb.password = crypt_password(request.POST["password1"])
mb.uid = pwd.getpwnam(settings.VIRTUAL_UID).pw_uid
mb.gid = pwd.getpwnam(settings.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:
@@ -417,11 +417,14 @@ def viewparameters(request):
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"]}]
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"]
tmp["params"] += [newdef]
gparams += [tmp]
return _render(request, 'admin/parameters.html', {