From 053da46494e036fe8f59cde65789547fffd1980d Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 11 Aug 2017 15:00:55 +0200 Subject: [PATCH] Fixed domain admin queryset. see #1212 --- .../admin/management/commands/subcommands/_mx.py | 6 ++++-- modoboa/admin/tests/test_mx.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/modoboa/admin/management/commands/subcommands/_mx.py b/modoboa/admin/management/commands/subcommands/_mx.py index 67495df25..ea455dffa 100644 --- a/modoboa/admin/management/commands/subcommands/_mx.py +++ b/modoboa/admin/management/commands/subcommands/_mx.py @@ -156,7 +156,8 @@ class CheckMXRecords(BaseCommand): emails = list(options["email"]) if not options["skip_admin_emails"]: emails.extend( - domain.admins.exclude(email="").values_list("email", flat=True) + domain.admins.exclude(mailbox__isnull=True) + .values_list("email", flat=True) ) if not len(emails): return @@ -205,7 +206,8 @@ class CheckMXRecords(BaseCommand): emails = list(options["email"]) if not options["skip_admin_emails"]: emails.extend( - domain.admins.exclude(email="").values_list("email", flat=True) + domain.admins.exclude(mailbox__isnull=True) + .values_list("email", flat=True) ) if not len(emails): return diff --git a/modoboa/admin/tests/test_mx.py b/modoboa/admin/tests/test_mx.py index 792027418..2e2a39b10 100644 --- a/modoboa/admin/tests/test_mx.py +++ b/modoboa/admin/tests/test_mx.py @@ -9,6 +9,7 @@ from django.core import management from django.core.urlresolvers import reverse from django.test import override_settings +from modoboa.core import factories as core_factories from modoboa.lib.tests import ModoTestCase from .. import factories @@ -25,6 +26,18 @@ class MXTestCase(ModoTestCase): cls.domain = factories.DomainFactory(name="modoboa.org") # should not exist cls.bad_domain = factories.DomainFactory(name="pouet.com") + # Add domain admin with mailbox + mb = factories.MailboxFactory( + address="admin", domain=cls.bad_domain, + user__username="admin@pouet.com", + user__groups=("DomainAdmins", ) + ) + cls.bad_domain.add_admin(mb.user) + # Add domain admin with no mailbox + admin = core_factories.UserFactory( + username="admin2@pouet.com", groups=("DomainAdmins", )) + cls.bad_domain.add_admin(admin) + cls.localconfig.parameters.set_value("valid_mxs", "127.0.0.1") cls.localconfig.save() models.MXRecord.objects.all().delete() @@ -63,6 +76,7 @@ class MXTestCase(ModoTestCase): "modo", "check_mx", "--domain", str(self.bad_domain.pk)) self.assertFalse( models.MXRecord.objects.filter(domain=self.bad_domain).exists()) + self.assertEqual(len(mail.outbox), 1) management.call_command( "modo", "check_mx", "--domain", "toto.com")