mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Merge pull request #1814 from jeromelebleu/fix-domain-admins
Fix account removal from domain admins
This commit is contained in:
@@ -494,8 +494,7 @@ class AccountPermissionsForm(forms.Form, DynamicForm):
|
||||
domain.add_admin(self.account)
|
||||
|
||||
for domain in models.Domain.objects.get_for_admin(self.account):
|
||||
if not filter(lambda name: self.cleaned_data[name] == domain.name,
|
||||
self.cleaned_data.keys()):
|
||||
if domain.name not in self.cleaned_data.values():
|
||||
domain.remove_admin(self.account)
|
||||
|
||||
|
||||
|
||||
@@ -504,19 +504,50 @@ class PermissionsTestCase(ModoTestCase):
|
||||
self.client.logout()
|
||||
|
||||
def test_domain_admins(self):
|
||||
factories.DomainFactory(name="test2.com")
|
||||
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[self.user.id]),
|
||||
self.values
|
||||
)
|
||||
self.assertEqual(self.user.role, "DomainAdmins")
|
||||
|
||||
self.values["mailboxes_limit"] = "0"
|
||||
self.values["mailbox_aliases_limit"] = "0"
|
||||
self.values["domains"] = ""
|
||||
self.values["domains_1"] = "test.com"
|
||||
self.values["domains_2"] = "test2.com"
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[self.user.id]),
|
||||
self.values
|
||||
)
|
||||
self.assertIn(
|
||||
self.user, models.Domain.objects.get(name="test.com").admins.all()
|
||||
)
|
||||
self.assertIn(
|
||||
self.user, models.Domain.objects.get(name="test2.com").admins.all()
|
||||
)
|
||||
|
||||
del self.values["domains_2"]
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[self.user.id]),
|
||||
self.values
|
||||
)
|
||||
self.assertIn(
|
||||
self.user, models.Domain.objects.get(name="test.com").admins.all()
|
||||
)
|
||||
self.assertNotIn(
|
||||
self.user, models.Domain.objects.get(name="test2.com").admins.all()
|
||||
)
|
||||
|
||||
self.values["role"] = "SimpleUsers"
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[self.user.id]),
|
||||
self.values
|
||||
)
|
||||
self.assertNotEqual(
|
||||
self.user.groups.first().name, "DomainAdmins")
|
||||
self.assertFalse(
|
||||
self.user.groups.filter(name="DomainAdmins").exists()
|
||||
)
|
||||
|
||||
def test_superusers(self):
|
||||
self.values["role"] = "SuperAdmins"
|
||||
|
||||
Reference in New Issue
Block a user