Merge pull request #2400 from fpoulain/fix_account_alias

Fix account alias on legacy interface
This commit is contained in:
Antoine Nguyen
2021-11-10 09:16:23 +01:00
committed by GitHub
3 changed files with 29 additions and 6 deletions
+6 -4
View File
@@ -420,10 +420,12 @@ class AccountFormMail(forms.Form, DynamicForm):
alias__address=alias).exists():
continue
local_part, domname = split_mailbox(alias)
al = models.Alias(address=alias, enabled=account.is_active)
al.domain = models.Domain.objects.get(name=domname)
al.save()
al.set_recipients([self.mb.full_address])
al, _ = models.Alias.objects.get_or_create(
address=alias,
domain=models.Domain.objects.get(name=domname),
defaults={'enabled': account.is_active},
)
al.add_recipients([self.mb.full_address])
al.post_create(user)
def _update_sender_addresses(self):
+7 -2
View File
@@ -137,8 +137,8 @@ class Alias(AdminObject):
for admin in self.domain.admins:
grant_access_to_object(admin, self)
def set_recipients(self, address_list):
"""Set recipients for this alias.
def add_recipients(self, address_list):
"""Add recipients for this alias.
Special recipients:
* local mailbox + extension: r_mailbox will be set to local mailbox
@@ -187,6 +187,11 @@ class Alias(AdminObject):
kwargs["r_mailbox"] = rcpt
AliasRecipient(**kwargs).save()
def set_recipients(self, address_list):
"""Set recipients for this alias."""
self.add_recipients(address_list)
# Remove old recipients
self.aliasrecipient_set.exclude(
address__in=address_list).delete()
+16
View File
@@ -119,6 +119,22 @@ class AccountTestCase(ModoTestCase):
account = User.objects.get(username=values["username"])
self.assertEqual(account.language, "fr")
def test_create_account_with_existing_alias(self):
alias = models.Alias.objects.get(address="alias@test.com")
alias.set_recipients(["user@external.com"])
values = {
"email": "tester@test.com",
"username": "tester@test.com",
"role": "SimpleUsers",
"random_password": "on",
"quota_act": True,
"is_active": True,
"stepid": "step2",
"aliases": "alias@test.com",
}
self.ajax_post(reverse("admin:account_add"), values)
self.assertTrue(alias.aliasrecipient_set.count() == 2)
def test_aliases_update_on_disable(self):
"""Check if aliases are updated when account is disabled."""
account = User.objects.get(username="user@test.com")