summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Trigaux <mat@odoo.com>2019-03-11 10:04:08 +0000
committerMartin Trigaux <mat@odoo.com>2019-03-11 10:50:45 +0000
commitfdce99424b292badd172df8efd81109115cc5d5f (patch)
tree12162be501e9bbcab4cf8fb9eca61675216bdce3
parentec40cbb5b0dbad91cf094e93d20b7bd5a0864d97 (diff)
[FIX] base_automation: do not read all fields
vals may be an empty dict This may happen a write is done on a computed field, the call to _write will be empty (still needed to update write_uid/date). Before this commit, all fields were read in the read call. This was unecessary and may produce acess-rights errors or other side effect (e.g. in odoo/enterprise#3778 the technical field ticket_count was read, even if not present in the view or the write call) Only compute old_values on the fields that are modified Fixes odoo/enterprise#3778 opw-1949911 closes odoo/odoo#31737 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
-rw-r--r--addons/base_automation/models/base_automation.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/addons/base_automation/models/base_automation.py b/addons/base_automation/models/base_automation.py
index a482d7d5911..196ebe9965f 100644
--- a/addons/base_automation/models/base_automation.py
+++ b/addons/base_automation/models/base_automation.py
@@ -249,7 +249,7 @@ class BaseAutomation(models.Model):
# read old values before the update
old_values = {
old_vals.pop('id'): old_vals
- for old_vals in records.read(list(vals))
+ for old_vals in (records.read(list(vals)) if vals else [])
}
# call original method
_write.origin(records, vals, **kw)