mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
update post_save hook
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
"""Django signal handlers for admin."""
|
||||
|
||||
from django.core import management
|
||||
from django.db.models import signals
|
||||
from django.dispatch import receiver
|
||||
|
||||
@@ -7,9 +8,14 @@ from . import models
|
||||
|
||||
|
||||
@receiver(signals.post_save, sender=models.Domain)
|
||||
def update_domain_mailboxes(sender, instance, **kwargs):
|
||||
"""Update associated mailboxes."""
|
||||
def update_domain_mxs_and_mailboxes(sender, instance, **kwargs):
|
||||
"""Update associated MXs and mailboxes."""
|
||||
if kwargs.get("created"):
|
||||
management.call_command(
|
||||
'modo', 'check_mx',
|
||||
domain=[instance],
|
||||
skip_admin_emails=True,
|
||||
)
|
||||
return
|
||||
instance.mailbox_set.filter(use_domain_quota=True).update(
|
||||
quota=instance.quota)
|
||||
|
||||
@@ -83,7 +83,8 @@ class CheckMXRecords(BaseCommand):
|
||||
models.MXRecord.objects.filter(domain=domain).delete()
|
||||
try:
|
||||
answers = dns.resolver.query(domain.name, "MX")
|
||||
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
|
||||
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN,
|
||||
dns.resolver.NoNameservers):
|
||||
raise StopIteration()
|
||||
|
||||
delta = timedelta(seconds=ttl)
|
||||
@@ -243,7 +244,9 @@ class CheckMXRecords(BaseCommand):
|
||||
if options['domain']:
|
||||
domains = []
|
||||
for domain in options['domain']:
|
||||
if domain.isdigit():
|
||||
if isinstance(domain, models.Domain):
|
||||
domains.append(domain)
|
||||
elif domain.isdigit():
|
||||
domains.append(models.Domain.objects.get(domain))
|
||||
else:
|
||||
domains.append(models.Domain.objects.filter(name=domain))
|
||||
|
||||
@@ -21,6 +21,7 @@ class MXTestCase(ModoTestCase):
|
||||
cls.domain = factories.DomainFactory(name="modoboa.org")
|
||||
factories.DomainFactory(name="pouet.com") # should not exist
|
||||
parameters.save_admin('VALID_MXS', '127.0.0.1', app='admin')
|
||||
models.MXRecord.objects.all().delete()
|
||||
|
||||
def test_management_command(self):
|
||||
"""Check that command works fine."""
|
||||
@@ -53,6 +54,7 @@ class DNSBLTestCase(ModoTestCase):
|
||||
super(DNSBLTestCase, cls).setUpTestData()
|
||||
cls.domain = factories.DomainFactory(name="modoboa.org")
|
||||
factories.DomainFactory(name="pouet.com") # should not exist
|
||||
models.DNSBLResult.objects.all().delete()
|
||||
|
||||
@override_settings(DNSBL_PROVIDERS=["zen.spamhaus.org"])
|
||||
def test_management_command(self):
|
||||
|
||||
Reference in New Issue
Block a user