From 6d783acf426c2ca2bc1c4d82c9d9e24c89ea80cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 27 Jul 2017 00:05:04 +0200 Subject: [PATCH] Make save parameter of set_multivalue public It can be useful for performance when setting values for MultiValue field on a large set of records. issue6625 review39491002 --- doc/ref/models/models.rst | 5 ++++- trytond/model/multivalue.py | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/ref/models/models.rst b/doc/ref/models/models.rst index 5f59d166d5..470b8c6b0f 100644 --- a/doc/ref/models/models.rst +++ b/doc/ref/models/models.rst @@ -737,9 +737,12 @@ Instance methods: Return the value of the field `name` for the pattern. -.. method:: MultiValueMixin.set_multivalue(name, value, \*\*pattern) +.. method:: MultiValueMixin.set_multivalue(name, value[, save], \*\*pattern) Store the value of the field `name` for the pattern. + If `save` is true, it will be stored in the database, otherwise the + modified :class:`ValueMixin` records are returned unsaved. `save` is true + by default. .. warning:: To customize the pattern, both methods must be override the same way. diff --git a/trytond/model/multivalue.py b/trytond/model/multivalue.py index f3d7e60356..de1fe4469a 100644 --- a/trytond/model/multivalue.py +++ b/trytond/model/multivalue.py @@ -60,14 +60,14 @@ class MultiValueMixin(object): else: return value - def set_multivalue(self, name, value, _save=True, **pattern): + def set_multivalue(self, name, value, save=True, **pattern): Value = self.multivalue_model(name) values = self.__values(name, pattern, match_none=True) if not values: values = [self.multivalue_record(name, **pattern)] for record in values: setattr(record, name, value) - if _save: + if save: Value.save(values) else: return values @@ -77,7 +77,7 @@ class MultiValueMixin(object): Value = cls.multivalue_model(name) to_save = [] for record in records: - to_save.extend(record.set_multivalue(name, val, _save=False)) + to_save.extend(record.set_multivalue(name, val, save=False)) Value.save(to_save)