Files
modoboa/extensions/postfix_autoreply/main.py
T
tonio 981540b2b5 It is now possible to delete a SuperAdmin permission.
Postfix Autoreply plugin is not a real plugin... I've begun the conversion but it will cause a modification into the SQL schema and I don't know how to handle migrations yet...
2009-10-22 18:31:43 +02:00

76 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
"""
Postfix auto-replies plugin.
This module provides a way to integrate MailNG auto-reply
functionality into Postfix.
"""
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from mailng.lib import events
from mailng import main
from models import Transport, Alias
def init():
events.register("CreateDomain", onCreateDomain)
events.register("DeleteDomain", onDeleteDomain)
events.register("CreateMailbox", onCreateMailbox)
events.register("DeleteMailbox", onDeleteMailbox)
events.register("ModifyMailbox", onModifyMailbox)
events.register("UserMenuDisplay", menu)
def urls():
return ()
def menu(**kwargs):
if kwargs["target"] != "user_menu_bar":
return []
return [
{"name" : "autoreply",
"url" : reverse(main.views.autoreply),
"img" : "/static/pics/auto-reply.png",
"label" : _("Auto-reply message")}
]
def onCreateDomain(**kwargs):
dom = kwargs["dom"]
transport = Transport()
transport.domain = "autoreply.%s" % dom.name
transport.method = "autoreply:"
transport.save()
def onDeleteDomain(**kwargs):
dom = kwargs["dom"]
trans = Transport.objects.get(domain="autoreply.%s" % dom.name)
trans.delete()
def onCreateMailbox(**kwargs):
mbox = kwargs["mbox"]
alias = Alias()
alias.full_address = mbox.full_address
alias.autoreply_address = \
"%s@autoreply.%s" % (mbox.full_address, mbox.domain.name)
alias.save()
def onDeleteMailbox(**kwargs):
mbox = kwargs["mbox"]
try:
alias = Alias.objects.get(full_address=mbox.full_address)
alias.delete()
except Alias.DoesNotExist:
pass
def onModifyMailbox(**kwargs):
mbox = kwargs["mbox"]
oldmbox = kwargs["oldmbox"]
if oldmbox.full_address == mbox.full_address:
return
alias = Alias.objects.get(full_address=oldmbox.full_address)
alias.full_address = mbox.full_address
alias.autoreply_address = \
"%s@autoreply.%s" % (mbox.full_address, mbox.domain.name)
alias.save()