@@ -38,6 +38,12 @@ def make_index_name(table_name, column_name):
38
38
return "%s_%s_index" % (table_name , column_name )
39
39
40
40
41
+ try :
42
+ from odoo .tools import pickle
43
+ except ImportError :
44
+ import pickle
45
+
46
+
41
47
from . import json
42
48
from .const import ENVIRON
43
49
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=()):
1187
1193
[model , field , [k for k in mapping if k not in mapping .values ()]],
1188
1194
)
1189
1195
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
+
1190
1225
def adapter (leaf , _or , _neg ):
1191
1226
left , op , right = leaf
1192
1227
if isinstance (right , (tuple , list )): # noqa: SIM108
0 commit comments