From 3910ca497fb8cbbd371bf3ae4006946c68538355 Mon Sep 17 00:00:00 2001 From: tonio Date: Fri, 16 Oct 2009 17:02:08 +0200 Subject: [PATCH] Ticket #10 + CSS bugfix --- admin/models.py | 63 ++++++++++++++++-------------------- settings_sample.py | 3 ++ static/stylesheets/basic.css | 4 ++- 3 files changed, 33 insertions(+), 37 deletions(-) diff --git a/admin/models.py b/admin/models.py index 2f2d7c1c8..32484bcab 100644 --- a/admin/models.py +++ b/admin/models.py @@ -21,23 +21,13 @@ class Domain(models.Model): return exec_as_vuser("mkdir -p %s" % path) def rename_dir(self, newname): - code, output = exec_pipe("sudo -u %s mv %s/%s %s/%s" \ - % (settings.VIRTUAL_UID, - settings.STORAGE_PATH, self.name, - settings.STORAGE_PATH, newname)) - if code: - os.system("echo '%s' >> /tmp/vmail.log" % output) - return False - return True + return exec_as_vuser("mv %s/%s %s/%s" \ + % (settings.STORAGE_PATH, self.name, + settings.STORAGE_PATH, newname)) def delete_dir(self): - code, output = exec_pipe("sudo -u %s rm -r %s/%s" \ - % (settings.VIRTUAL_UID, - settings.STORAGE_PATH, - self.name)) - if code: - return False - return True + return exec_as_vuser("rm -r %s/%s" \ + % (settings.STORAGE_PATH, self.name)) def __str__(self): return self.name @@ -60,6 +50,17 @@ class Mailbox(models.Model): ("view_mailboxes", "View mailboxes"), ) + 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" + def __str__(self): return "%s" % (self.address) @@ -67,11 +68,7 @@ class Mailbox(models.Model): path = "%s/%s/%s" % (settings.STORAGE_PATH, domain.name, self.address) if not exec_as_vuser("mkdir -p %s" % path): return False - try: - mbtype = getattr(settings, "MAILBOX_TYPE") - except AttributeError: - mbtype = "maildir" - if mbtype == "mbox": + if self.mbtype == "mbox": template = ["Inbox", "Drafts", "Sent", "Trash", "Junk"] for dir in template: exec_as_vuser("touch %s/%s" % (path, dir)) @@ -81,29 +78,23 @@ class Mailbox(models.Model): template = [".Drafts/", ".Sent/", ".Trash/", ".Junk/"] for dir in template: for sdir in ["cur", "new", "tmp"]: - exec_as_vuser("mkdir -p %s/.maildir/%s/%s" % (path, dir, sdir)) - self.path = "%s/%s/.maildir/" % (domain.name, self.address) + exec_as_vuser("mkdir -p %s/%s/%s/%s" \ + % (path, self.mdirroot, dir, sdir)) + self.path = "%s/%s/%s/" % (domain.name, self.address, self.mdirroot) return True def rename_dir(self, domain, newaddress): path = "%s/%s" % (settings.STORAGE_PATH, domain) - code, output = exec_pipe("sudo -u %s mv %s/%s %s/%s" \ - % (settings.VIRTUAL_UID, - path, self.address, path, newaddress)) + code = exec_as_vuser("mv %s/%s %s/%s" \ + % (path, self.address, path, newaddress)) if code: - os.system("echo '%s' >> /tmp/vmail.log" % output) - return False - self.path = "%s/%s/.maildir/" % (domain, newaddress) - return True + self.path = "%s/%s/%s/" % (domain, newaddress, self.mdirroot) + return code def delete_dir(self): - code, output = exec_pipe("sudo -u %s rm -r %s/%s/%s" \ - % (settings.VIRTUAL_UID, - settings.STORAGE_PATH, - self.domain.name, self.name)) - if code: - return False - return True + return exec_as_vuser("rm -r %s/%s/%s" \ + % (settings.STORAGE_PATH, + self.domain.name, self.address)) class Alias(models.Model): address = models.CharField(_('address'), max_length=100) diff --git a/settings_sample.py b/settings_sample.py index 8800b82d6..9a2e5b0bb 100644 --- a/settings_sample.py +++ b/settings_sample.py @@ -98,5 +98,8 @@ VIRTUAL_GID = "vmail" # Mailboxes format: maildir (default) or mbox # MAILBOX_TYPE = "" +# Maildir storage directory +# MAILDIR_ROOT = ".maildir" + # Autoreplies sending timeout (default: 86400s) # AUTOREPLIES_TIMEOUT = diff --git a/static/stylesheets/basic.css b/static/stylesheets/basic.css index 16c8b6257..0aea45e1b 100644 --- a/static/stylesheets/basic.css +++ b/static/stylesheets/basic.css @@ -284,7 +284,9 @@ body { } #domcontent { - margin: 10px auto; + margin: 0 auto; + margin-top: 60px; + margin-bottom: 10px; width: 90%; }