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)
def __unicode__(self):
return self.domain_name
+ trigger_update = True
class Meta:
ordering=('domain_name',)
db_table='mail"."local_domains'
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'
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)
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)