Files
modoboa/lib/events.py
T
Antoine Nguyen fcab20b608 Important update of the plugin engine.
New plugin that allows the handling of an Amavisd-new SQL quarantine.

NB: a DB connections manager has been added inside the lib because
Django does not support multiple connections at the same time. The
main consequence is that we don't use an ORM and that we have to
rewrite a small wrapper that supports several DB (mysql, postgresql, etc.).
Adding a dependancy to an existing ORM module (like SQLalchemy) is
heavy, we don't want that for now.
2009-06-26 17:13:35 +02:00

40 lines
916 B
Python

# -*- coding: utf-8 -*-
"""
This module provides a simple way of managing events between MailNG
core application and additional components.
"""
events = ["CreateDomain",
"DeleteDomain",
"CreateMailbox",
"DeleteMailbox",
"UserMenuDisplay"]
callbacks = {}
def register(event, callback):
if not event in events:
return 0
if not event in callbacks.keys():
callbacks[event] = []
callbacks[event].append(callback)
return 1
def raiseEvent(event, **kwargs):
if not event in events or not event in callbacks.keys():
return 0
for callback in callbacks[event]:
callback(**kwargs)
return 1
def raiseQueryEvent(event, **kwargs):
result = []
if not event in events or not event in callbacks.keys():
return result
for callback in callbacks[event]:
result += callback(**kwargs)
return result