def trigger_create(self, id): ''' Trigger create actions :param id: the created id ''' trigger_obj = Pool().get('ir.trigger') trigger_ids = trigger_obj.get_triggers(self._name, 'create') if not trigger_ids: return record = self.browse(id) triggers = trigger_obj.browse(trigger_ids) for trigger in triggers: if trigger_obj.eval(trigger, record): trigger_obj.trigger_action([id], trigger.id)
def trigger_delete(self, ids): ''' Trigger delete actions :param ids: the deleted ids ''' trigger_obj = Pool().get('ir.trigger') trigger_ids = trigger_obj.get_triggers(self._name, 'delete') if not trigger_ids: return records = self.browse(ids) triggers = trigger_obj.browse(trigger_ids) for trigger in triggers: triggered_ids = [] for record in records: if trigger_obj.eval(trigger, record): triggered_ids.append(record.id) if triggered_ids: trigger_obj.trigger_action(triggered_ids, trigger.id)
def trigger_write(self, eligibles): ''' Trigger write actions :param eligibles: a dictionary of the lists of eligible ids by triggers ''' trigger_obj = Pool().get('ir.trigger') trigger_ids = eligibles.keys() if not trigger_ids: return records = self.browse(list(chain(*eligibles.values()))) id2record = dict((x.id, x) for x in records) triggers = trigger_obj.browse(trigger_ids) for trigger in triggers: triggered_ids = [] for record_id in eligibles[trigger.id]: record = id2record[record_id] if trigger_obj.eval(trigger, record): triggered_ids.append(record.id) if triggered_ids: trigger_obj.trigger_action(triggered_ids, trigger.id)