mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
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.
40 lines
916 B
Python
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
|