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
This commit is contained in:
Cédric Krier committed 2017-07-27 00:05:04 +02:00
1 parent 965f8b0cdb
commit 6d783acf42
2 files changed
+7 -4

No files matched your search

+4 -1
View File
@@ -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.
+3 -3
View File
@@ -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)