diff --git a/modoboa/admin/forms/account.py b/modoboa/admin/forms/account.py index ff5e1e0c7..f2ca42690 100644 --- a/modoboa/admin/forms/account.py +++ b/modoboa/admin/forms/account.py @@ -204,6 +204,11 @@ class AccountFormGeneral(forms.ModelForm): account.set_password(self.cleaned_data["password2"]) account.save() account.role = self.cleaned_data["role"] + if hasattr(account, "mailbox"): + # Update forward status according to account status + models.Alias.objects.filter( + address=account.email, internal=False).update( + enabled=account.is_active) return account diff --git a/modoboa/admin/tests/test_account.py b/modoboa/admin/tests/test_account.py index f5df49a44..4eb722c45 100644 --- a/modoboa/admin/tests/test_account.py +++ b/modoboa/admin/tests/test_account.py @@ -119,6 +119,29 @@ class AccountTestCase(ModoTestCase): account = User.objects.get(username=values["username"]) self.assertEqual(account.language, "fr") + def test_forward_updated_on_edit(self): + account = User.objects.get(username="user@test.com") + forward = models.Alias.objects.create(address=account.email, internal=False) + values = { + "username": "user@test.com", + "role": "SimpleUsers", + "quota_act": True, + "is_active": False, + "email": "user@test.com", + "language": "en" + } + self.ajax_post( + reverse("admin:account_change", args=[account.id]), values + ) + forward.refresh_from_db() + self.assertFalse(forward.enabled) + values["is_active"] = True + self.ajax_post( + reverse("admin:account_change", args=[account.id]), values + ) + forward.refresh_from_db() + self.assertTrue(forward.enabled) + def test_aliases_update_on_rename(self): """Check if aliases are updated on mailbox rename.""" account = User.objects.get(username="user@test.com")