Merge pull request #1814 from jeromelebleu/fix-domain-admins

Fix account removal from domain admins
This commit is contained in:
Antoine Nguyen
2020-01-06 10:12:03 +01:00
committed by GitHub
2 changed files with 34 additions and 4 deletions
+1 -2
View File
@@ -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)
+33 -2
View File
@@ -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"