É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
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.
unsubscribe(consumer, model_names=None)[source]

Retire un consommateur d’un événement

Paramètres:
  • consumer – la fonction à désinscrire
  • model_names – retire seulement pour ces modèles ou, si None, retire un consommateur qui est actif sur tous les modèles
connector.event.on_record_create = <connector.event.Event object at 0x507ded0>

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, ...}

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

connector.event.on_record_write = <connector.event.Event object at 0x507de50>

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, ...}