diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py index 875c85f65a..ecc657ae8a 100644 --- a/tryton/gui/window/view_form/model/group.py +++ b/tryton/gui/window/view_form/model/group.py @@ -88,7 +88,7 @@ class ModelRecordGroup(SignalEvent): self.load(ids) self.model_removed = [] self.model_deleted = [] - self.on_write = '' + self.on_write = set() self.readonly = readonly if self._context.get('_datetime'): self.readonly = True @@ -130,12 +130,14 @@ class ModelRecordGroup(SignalEvent): def on_write_ids(self, ids): if not self.on_write: return False - try: - res = getattr(self.rpc, self.on_write)(ids, self.context) - except Exception, exception: - common.process_exception(exception, self.window) - return False - return res + res = [] + for fnct in self.on_write: + try: + res += getattr(self.rpc, fnct)(ids, self.context) + except Exception, exception: + common.process_exception(exception, self.window) + return False + return list({}.fromkeys(res)) def _load_for(self, values): if len(values)>10: diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py index 5469f15917..8e31ce67ba 100644 --- a/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/gui/window/view_form/screen/screen.py @@ -385,7 +385,7 @@ class Screen(SignalEvent): return position def set_on_write(self, func_name): - self.models.on_write = func_name + self.models.on_write.add(func_name) def cancel_current(self): if self.current_model: