mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-19 05:58:34 +02:00
End of ticket #26
This commit is contained in:
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
@@ -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', {
|
||||
|
||||
Reference in New Issue
Block a user