From 5f9bc8a4e283b460797d10b6ab32bc7d310d3132 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Mon, 7 Mar 2016 09:13:39 +0100 Subject: [PATCH] Refactor. see #832 --- modoboa/admin/forms/account.py | 20 +++++++++++--------- modoboa/admin/forms/domain.py | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/modoboa/admin/forms/account.py b/modoboa/admin/forms/account.py index 22729bf5f..10aa6ee22 100644 --- a/modoboa/admin/forms/account.py +++ b/modoboa/admin/forms/account.py @@ -232,7 +232,13 @@ class AccountFormMail(forms.Form, DynamicForm): def clean_email(self): """Ensure lower case emails""" - return self.cleaned_data["email"].lower() + email = self.cleaned_data["email"].lower() + self.locpart, domname = split_mailbox(email) + try: + self.domain = Domain.objects.get(name=domname) + except Domain.DoesNotExist: + raise forms.ValidationError(_("Domain does not exist")) + return email def clean(self): """Custom fields validation. @@ -248,16 +254,12 @@ class AccountFormMail(forms.Form, DynamicForm): def create_mailbox(self, user, account): """Create a mailbox associated to :kw:`account`.""" - locpart, domname = split_mailbox(self.cleaned_data["email"]) - try: - domain = Domain.objects.get(name=domname) - except Domain.DoesNotExist: - raise NotFound(_("Domain does not exist")) - if not user.can_access(domain): + if not user.can_access(self.domain): raise PermDeniedException events.raiseEvent("CanCreate", user, "mailboxes") - self.mb = Mailbox(address=locpart, domain=domain, user=account, - use_domain_quota=self.cleaned_data["quota_act"]) + self.mb = Mailbox( + address=self.locpart, domain=self.domain, user=account, + use_domain_quota=self.cleaned_data["quota_act"]) self.mb.set_quota(self.cleaned_data["quota"], user.has_perm("admin.add_domain")) self.mb.save(creator=user) diff --git a/modoboa/admin/forms/domain.py b/modoboa/admin/forms/domain.py index 9bd579cd2..aa11113a6 100644 --- a/modoboa/admin/forms/domain.py +++ b/modoboa/admin/forms/domain.py @@ -16,7 +16,7 @@ from modoboa.lib.web_utils import render_to_json_response from ..lib import check_if_domain_exists from ..models import ( - Domain, DomainAlias, Mailbox, Alias, Quota + Domain, DomainAlias, Mailbox, Alias ) DOMAIN_TYPES = [