diff options
author | Magnus Hagander | 2017-03-10 20:14:39 +0000 |
---|---|---|
committer | Magnus Hagander | 2017-03-10 20:14:39 +0000 |
commit | cd8ffcf0677b8dc8437f6a0b930b299462f28d7d (patch) | |
tree | 287dbd13e0ce6e6590e42acae7bf71de5240ac96 | |
parent | 080f6bfb66d3690e630510c77a80cbb0071d0bfa (diff) |
Drop a trigger file in /tmp/ whenever anything is changed
This can be picked up by a cronjob for frequent posting of the
data to central routing servers. This way we don't have to poll
everything very frequently.
-rw-r--r-- | pgmailmgr/mailmgr/models.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/pgmailmgr/mailmgr/models.py b/pgmailmgr/mailmgr/models.py index f195487..3f2cb07 100644 --- a/pgmailmgr/mailmgr/models.py +++ b/pgmailmgr/mailmgr/models.py @@ -1,5 +1,6 @@ from django.db import models from django.contrib.auth.models import User +from django.db.models import signals class LocalDomain(models.Model): local_domain_id = models.AutoField(null=False, primary_key=True) @@ -11,6 +12,7 @@ class LocalDomain(models.Model): def __unicode__(self): return self.domain_name + trigger_update = True class Meta: ordering=('domain_name',) db_table='mail"."local_domains' @@ -25,6 +27,7 @@ class Forwarder(models.Model): def __unicode__(self): return "%s@%s -> %s" % (self.local_part, self.local_domain.domain_name, self.remote_name) + trigger_update = True class Meta: ordering=('local_part',) db_table='mail"."forwarder' @@ -41,12 +44,14 @@ class VirtualUser(models.Model): def __unicode__(self): return "%s@%s (%s)" % (self.local_part, self.local_domain.domain_name, self.full_name or '') + trigger_update = True class Meta: ordering=('local_part',) db_table='mail"."virtual_user' managed=False unique_together=('local_domain', 'local_part', ) - + + class UserPermissions(models.Model): user = models.ForeignKey(User, null=False) domain = models.ForeignKey(LocalDomain, null=False) @@ -65,3 +70,12 @@ class Log(models.Model): class Meta: ordering=('-when',) + +def pgmail_save_handler(sender, **kwargs): + if hasattr(sender, 'trigger_update') and sender.trigger_update: + # Touch a temp file in /tmp/ to inform cronjobs we have + # changed something. + with open('/tmp/.mailmgr_update', 'w') as f: + pass + +signals.post_save.connect(pgmail_save_handler) |