Skip to content

Commit 52c6ee6

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.
1 parent fd578e3 commit 52c6ee6

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
@@ -1187,6 +1193,35 @@ def change_field_selection_values(cr, model, field, mapping, skip_inherit=()):
11871193
[model, field, [k for k in mapping if k not in mapping.values()]],
11881194
)
11891195

1196+
if table_exists(cr, "ir_values"):
1197+
query = """
1198+
UPDATE ir_values
1199+
SET value = %(json)s::jsonb->>value
1200+
WHERE model = %(model)s
1201+
AND name = %(name)s
1202+
AND key = 'default'
1203+
AND value IN %(keys)s
1204+
"""
1205+
dumped_map = {pickle.dumps(k): pickle.dumps(v) for k, v in mapping.items()}
1206+
else:
1207+
query = """
1208+
UPDATE ir_default d
1209+
SET json_value = (%(json)s::jsonb->>d.json_value)
1210+
FROM ir_model_fields f
1211+
WHERE d.field_id = f.id
1212+
AND f.model = %(model)s
1213+
AND f.name = %(name)s
1214+
AND d.json_value IN %(keys)s
1215+
"""
1216+
dumped_map = {json.dumps(k): json.dumps(v) for k, v in mapping.items()}
1217+
data = {
1218+
"keys": tuple(dumped_map),
1219+
"json": json.dumps(dumped_map),
1220+
"model": model,
1221+
"name": field,
1222+
}
1223+
cr.execute(query, data)
1224+
11901225
def adapter(leaf, _or, _neg):
11911226
left, op, right = leaf
11921227
if isinstance(right, (tuple, list)): # noqa: SIM108

0 commit comments

Comments
 (0)