Skip to content

Commit dda5897

Browse files
committed
[FIX] fields: update default selection
When calling change_field_selection_values, any default value is not updated. This fix updates the value in the default values table. Part-of: #323 Signed-off-by: Christophe Simonis (chs) <[email protected]>
1 parent 8f50e28 commit dda5897

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

src/util/fields.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ def make_index_name(table_name, column_name):
3838
return "%s_%s_index" % (table_name, column_name)
3939

4040

41+
try:
42+
from odoo.tools import pickle
43+
except ImportError:
44+
import pickle
45+
46+
4147
from . import json
4248
from .const import ENVIRON
4349
from .domains import _adapt_one_domain, _replace_path, _valid_path_to, adapt_domains
@@ -1217,6 +1223,35 @@ def change_field_selection_values(cr, model, field, mapping, skip_inherit=()):
12171223
[model, field, [k for k in mapping if k not in mapping.values()]],
12181224
)
12191225

1226+
if table_exists(cr, "ir_values"):
1227+
query = """
1228+
UPDATE ir_values
1229+
SET value = %(json)s::jsonb->>value
1230+
WHERE model = %(model)s
1231+
AND name = %(name)s
1232+
AND key = 'default'
1233+
AND value IN %(keys)s
1234+
"""
1235+
dumped_map = {pickle.dumps(k): pickle.dumps(v) for k, v in mapping.items()}
1236+
else:
1237+
query = """
1238+
UPDATE ir_default d
1239+
SET json_value = (%(json)s::jsonb->>d.json_value)
1240+
FROM ir_model_fields f
1241+
WHERE d.field_id = f.id
1242+
AND f.model = %(model)s
1243+
AND f.name = %(name)s
1244+
AND d.json_value IN %(keys)s
1245+
"""
1246+
dumped_map = {json.dumps(k): json.dumps(v) for k, v in mapping.items()}
1247+
data = {
1248+
"keys": tuple(dumped_map),
1249+
"json": json.dumps(dumped_map),
1250+
"model": model,
1251+
"name": field,
1252+
}
1253+
cr.execute(query, data)
1254+
12201255
def adapter(leaf, _or, _neg):
12211256
left, op, right = leaf
12221257
if isinstance(right, (tuple, list)): # noqa: SIM108

0 commit comments

Comments
 (0)