@@ -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+
4147from . import json
4248from .const import ENVIRON
4349from .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