diff --git a/modoboa/admin/forms/domain.py b/modoboa/admin/forms/domain.py index a1c649526..bad0668d7 100644 --- a/modoboa/admin/forms/domain.py +++ b/modoboa/admin/forms/domain.py @@ -239,22 +239,26 @@ class DomainFormOptions(forms.Form): da.role = "DomainAdmins" da.post_create(user) + dom_admin_username = self.cleaned_data["dom_admin_username"] mb = Mailbox( - address=self.cleaned_data["dom_admin_username"], domain=domain, + address=dom_admin_username, domain=domain, user=da, use_domain_quota=True ) mb.set_quota( override_rules=user.has_perm("admin.change_domain")) mb.save(creator=user) - if domain.type == "domain" and self.cleaned_data["create_aliases"]: + condition = ( + domain.type == "domain" and + self.cleaned_data["create_aliases"] and + dom_admin_username != "postmaster" + ) + if condition: core_signals.can_create_object.send( self.__class__, context=user, object_type="mailbox_aliases") - alias = Alias( - address=u"postmaster@{}".format(domain.name), - domain=domain, enabled=True - ) - alias.save() + address = u"postmaster@{}".format(domain.name) + alias = Alias.objects.create( + address=address, domain=domain, enabled=True) alias.set_recipients([mb.full_address]) alias.post_create(user) diff --git a/modoboa/admin/tests/test_domain.py b/modoboa/admin/tests/test_domain.py index bdf153d78..24906676d 100644 --- a/modoboa/admin/tests/test_domain.py +++ b/modoboa/admin/tests/test_domain.py @@ -55,10 +55,7 @@ class DomainTestCase(ModoTestCase): "dom_admin_username": "toto", "create_aliases": True, "type": "domain", "stepid": 'step3' } - self.ajax_post( - reverse("admin:domain_add"), - values - ) + self.ajax_post(reverse("admin:domain_add"), values) dom = Domain.objects.get(name="pouet.com") da = User.objects.get(username="toto@pouet.com") self.assertIn(da, dom.admins) @@ -69,6 +66,18 @@ class DomainTestCase(ModoTestCase): ) self.assertTrue(da.can_access(al)) + values = { + "name": "pouet2.com", "quota": 100, "create_dom_admin": "yes", + "dom_admin_username": "postmaster", "create_aliases": "yes", + "type": "domain", "stepid": "step3" + } + self.ajax_post(reverse("admin:domain_add"), values) + self.assertTrue( + User.objects.filter(username="postmaster@pouet2.com").exists()) + self.assertFalse( + Alias.objects.filter( + address="postmaster@pouet2.com", internal=False).exists()) + def test_create_with_template_and_empty_quota(self): """Test the creation of a domain with a template and no quota""" values = {