diff --git a/tryton/common/common.py b/tryton/common/common.py index 8ca80e3219..b130f96e93 100644 --- a/tryton/common/common.py +++ b/tryton/common/common.py @@ -187,12 +187,12 @@ class ViewSearch(object): def add(self, model, name, domain): domain = PYSONEncoder().encode(domain) try: - id_ = RPCExecute('model', 'ir.ui.view_search', - 'create', { - 'model': model, - 'name': name, - 'domain': domain, - }) + id_, = RPCExecute('model', 'ir.ui.view_search', + 'create', [{ + 'model': model, + 'name': name, + 'domain': domain, + }]) except RPCException: return self.searches.setdefault(model, []).append((id_, name, domain)) @@ -1049,11 +1049,11 @@ def process_exception(exception, *args, **kwargs): name, msg, description = exception.args res = userwarning(description, msg) if res in ('always', 'ok'): - args2 = ('model', 'res.user.warning', 'create', { - 'user': rpc._USER, - 'name': name, - 'always': (res == 'always'), - }, rpc.CONTEXT) + args2, = ('model', 'res.user.warning', 'create', [{ + 'user': rpc._USER, + 'name': name, + 'always': (res == 'always'), + }], rpc.CONTEXT) try: rpc_execute(*args2) except TrytonServerError, exception: diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py index 57cd682792..eb7c223cd5 100644 --- a/tryton/gui/window/view_form/model/field.py +++ b/tryton/gui/window/view_form/model/field.py @@ -530,6 +530,7 @@ class O2MField(CharField): record_deleted = record.value[self.name].record_deleted result = [('add', [])] parent_name = self.attrs.get('relation_field', '') + to_create = [] for record2 in record.value[self.name]: if record2 in record_removed or record2 in record_deleted: continue @@ -542,7 +543,9 @@ class O2MField(CharField): else: values = record2.get() values.pop(parent_name, None) - result.append(('create', values)) + to_create.append(values) + if to_create: + result.append(('create', to_create)) if not result[0][1]: del result[0] if record_removed: diff --git a/tryton/gui/window/view_form/model/record.py b/tryton/gui/window/view_form/model/record.py index ddd85939ae..591bec59df 100644 --- a/tryton/gui/window/view_form/model/record.py +++ b/tryton/gui/window/view_form/model/record.py @@ -267,8 +267,8 @@ class Record(SignalEvent): if self.id < 0: value = self.get() try: - res = RPCExecute('model', self.model_name, 'create', value, - context=self.context_get()) + res, = RPCExecute('model', self.model_name, 'create', + [value], context=self.context_get()) except RPCException: return False old_id = self.id diff --git a/tryton/gui/window/win_export.py b/tryton/gui/window/win_export.py index 1fc34e16c2..ef582708ff 100644 --- a/tryton/gui/window/win_export.py +++ b/tryton/gui/window/win_export.py @@ -313,13 +313,13 @@ class WinExport(NoModal): fields.append(field_name) iter = self.model2.iter_next(iter) try: - new_id = RPCExecute('model', 'ir.export', 'create', { + new_id, = RPCExecute('model', 'ir.export', 'create', [{ 'name': name, 'resource': self.model, - 'export_fields': [('create', { + 'export_fields': ('create', [{ 'name': x, - }) for x in fields], - }) + } for x in fields]), + }]) except RPCException: return self.predef_model.append((