Événement¶
-
class
connector.event.
Event
[source]¶ Bases :
object
Un événement contient des consommateurs qui sont appelés lorsque l’événement survient.
Les événements sont capables de filtrer par nom de modèle les consommateurs à exécuter.
L’usage classique d’un événement est d’instancier un objet Event
on_my_event = Event()
Un événement a toujours au moins les deux arguments suivants :
- session
- model_name
Ensuite pour abonner un ou plusieurs consommateurs, un événement a une fonction :
def do_something(session, model_name, a, b): print "Event was fired with arguments: %s, %s" % (a, b) # active on all models on_my_event.subscribe(do_something) def do_something_product(session, model_name, a, b): print ("Event was fired on a product " "with arguments: %s, %s" % (a, b)) # active only on product.product on_my_event.subscribe(do_something_product, model_names='product.product')
On peut aussi remplacer un consommateur
def do_something_product2(session, model_name, a, b): print "Consumer 2" print ("Event was fired on a product " "with arguments: %s, %s" % (a, b)) on_my_event.subscribe(do_something_product2, replacing=do_something_product)
Finalement, on déclenche l’événement
on_my_event.fire(session, 'res.users', 'value_a', 'value_b')
Un consommateur peut être inscrit grâce à un décorateur
@on_my_event def do_other_thing(session, model_name, a, b): print 'foo' @on_my_event(replacing=do_other_thing) def print_bar(session, model_name, a, b): print 'bar'
-
fire
(session, model_name, *args, **kwargs)[source]¶ Appelle chaque consommateur inscrit à l’événement avec les arguments positionnels et arguments nommés fournis.
Tous les consommateurs qui sont abonnés de manière globale (sans nom de modèle) ou qui sont abonnés au même modèle
Paramètres: - session (
connector.session.Session
) – session en cours - model_name (str) – nom du modèle
- args – arguments propagés au consommateur. Le deuxième argument de args est le nom de modèle. Le premier argument est la session.
- kwargs – arguments nommés propagés au consommateur
- session (
-
has_consumer_for
(session, model_name)[source]¶ Renvoie True si au moins un consommateur est abonné pour ce modèle.
-
subscribe
(consumer, model_names=None, replacing=None)[source]¶ Abonne un consommateur à l’événement
Paramètres: - consumer – la fonction à abonner à l’événement
- model_names – le consommateur sera actif seulement sur ces modèles ou, si
None
, actifs sur tous les modèles - replacing – la fonction à remplacer par la nouvelle.
-
connector.event.
on_record_create
= <connector.event.Event object>¶ on_record_create
est déclenché à la création d’un enregistrement.Les abonnés doivent prendre les arguments suivants :
- session : objet
ConnectorSession
- model_name : nom du modèle
- record_id : Id de l’enregistrement créé
- vals : valeurs des champs mis à jour, par ex. {“field_name”: field_value, …}
- session : objet
-
connector.event.
on_record_unlink
= <connector.event.Event object>¶ on_record_unlink
est déclenché à la suppression d’un enregistrement.Les abonnés doivent prendre les arguments suivants :
- session : objet
ConnectorSession
- model_name : nom du modèle
- record_id : Id de l’enregistrement
- session : objet
-
connector.event.
on_record_write
= <connector.event.Event object>¶ on_record_write
est déclenché à la mise à jour d’un enregistrement.Les abonnés doivent prendre les arguments suivants :
- session : objet
ConnectorSession
- model_name : nom du modèle
- record_id : Id de l’enregistrement
- vals : valeurs des champ pour le nouvel enregistrement, par ex. {“field_name”: field_value, …}
- session : objet