mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Merge pull request #3046 from modoboa/fix/internal_alias_mistake
Only create not internal aliases from account form
This commit is contained in:
@@ -403,6 +403,7 @@ class AccountFormMail(forms.Form, DynamicForm):
|
||||
|
||||
def _update_aliases(self, user, account):
|
||||
"""Update mailbox aliases."""
|
||||
# 1. We check if existing aliases were removed...
|
||||
qset = self.mb.aliasrecipient_set.select_related("alias").filter(
|
||||
alias__internal=False)
|
||||
for ralias in qset:
|
||||
@@ -414,22 +415,26 @@ class AccountFormMail(forms.Form, DynamicForm):
|
||||
alias.delete()
|
||||
else:
|
||||
self.aliases.remove(ralias.alias.address)
|
||||
# 2. Nothing left to do, return
|
||||
if not self.aliases:
|
||||
return
|
||||
# 3. Check limits at all levels
|
||||
core_signals.can_create_object.send(
|
||||
self.__class__, context=user, klass=models.Alias,
|
||||
count=len(self.aliases))
|
||||
core_signals.can_create_object.send(
|
||||
self.__class__, context=self.mb.domain,
|
||||
object_type="mailbox_aliases", count=len(self.aliases))
|
||||
# 4. Create / update aliases
|
||||
for alias in self.aliases:
|
||||
if self.mb.aliasrecipient_set.select_related("alias").filter(
|
||||
alias__address=alias).exists():
|
||||
alias__address=alias, alias__internal=False).exists():
|
||||
continue
|
||||
local_part, domname = split_mailbox(alias)
|
||||
al, _ = models.Alias.objects.get_or_create(
|
||||
address=alias,
|
||||
domain=models.Domain.objects.get(name=domname),
|
||||
internal=False,
|
||||
defaults={'enabled': account.is_active},
|
||||
)
|
||||
al.add_recipients([self.mb.full_address])
|
||||
|
||||
@@ -135,6 +135,26 @@ class AccountTestCase(ModoTestCase):
|
||||
self.ajax_post(reverse("admin:account_add"), values)
|
||||
self.assertTrue(alias.aliasrecipient_set.count() == 2)
|
||||
|
||||
def test_create_alias_on_existing_account(self):
|
||||
values = {
|
||||
"email": "tester@test.com",
|
||||
"username": "tester@test.com",
|
||||
"role": "SimpleUsers",
|
||||
"random_password": "on",
|
||||
"quota_act": True,
|
||||
"is_active": True,
|
||||
"stepid": "step2",
|
||||
"aliases": "user@test.com",
|
||||
}
|
||||
self.ajax_post(reverse("admin:account_add"), values)
|
||||
# Check that internal alias has not been updated
|
||||
alias = models.Alias.objects.get(
|
||||
address="user@test.com", internal=True)
|
||||
self.assertTrue(alias.aliasrecipient_set.count() == 1)
|
||||
alias = models.Alias.objects.get(
|
||||
address="user@test.com", internal=False)
|
||||
self.assertTrue(alias.aliasrecipient_set.count() == 1)
|
||||
|
||||
def test_create_disabled_account(self):
|
||||
"""Check if account and alias are disabled."""
|
||||
values = {
|
||||
|
||||
Reference in New Issue
Block a user