@@ -69,53 +69,6 @@ def default_get(self, fields):
69
69
70
70
return res
71
71
72
- def onchange (self , values , field_names , fields_spec ):
73
- first_call = not field_names
74
- if first_call :
75
- field_names = [fname for fname in values if fname != "id" ]
76
- missing_names = [fname for fname in fields_spec if fname not in values ]
77
- defaults = self .default_get (missing_names )
78
- for field_name in missing_names :
79
- values [field_name ] = defaults .get (field_name , False )
80
- if field_name in defaults :
81
- field_names .append (field_name )
82
-
83
- server_action_id = self .env .context .get ("server_action_id" )
84
- server_action = self .env ["ir.actions.server" ].sudo ().browse (server_action_id )
85
- if not server_action :
86
- return super ().onchange (values , field_names , fields_spec )
87
- dynamic_fields = {}
88
-
89
- for line in server_action .mapped ("mass_edit_line_ids" ):
90
- values ["selection__" + line .field_id .name ] = "ignore"
91
- values [line .field_id .name ] = False
92
-
93
- dynamic_fields ["selection__" + line .field_id .name ] = fields .Selection (
94
- [], default = "ignore"
95
- )
96
-
97
- dynamic_fields [line .field_id .name ] = fields .Text ([()], default = False )
98
-
99
- self ._fields .update (dynamic_fields )
100
-
101
- res = super ().onchange (values , field_names , fields_spec )
102
- if not res ["value" ]:
103
- value = {key : value for key , value in values .items () if value is not False }
104
- res ["value" ] = value
105
-
106
- for field in dynamic_fields :
107
- self ._fields .pop (field )
108
-
109
- view_temp = (
110
- self .env ["ir.ui.view" ]
111
- .sudo ()
112
- .search ([("name" , "=" , "Temporary Mass Editing Wizard" )], limit = 1 )
113
- )
114
- if view_temp :
115
- view_temp .unlink ()
116
-
117
- return res
118
-
119
72
@api .model
120
73
def _prepare_fields (self , line , field , field_info ):
121
74
result = {}
@@ -276,8 +229,7 @@ def _clean_check_company_field_domain(self, TargetModel, field, field_info):
276
229
def create (self , vals_list ):
277
230
server_action_id = self .env .context .get ("server_action_id" )
278
231
server_action = self .env ["ir.actions.server" ].sudo ().browse (server_action_id )
279
- active_ids = self .env .context .get ("active_ids" , [])
280
- if server_action and active_ids :
232
+ if server_action :
281
233
for vals in vals_list :
282
234
values = {}
283
235
for key , val in vals .items ():
@@ -308,14 +260,15 @@ def create(self, vals_list):
308
260
values .update ({split_key : vals .get (split_key , False )})
309
261
310
262
if values :
311
- for active_id in active_ids :
312
- self .env [server_action .model_id .model ].browse (
313
- active_id
314
- ).with_context (
315
- mass_edit = True ,
316
- ).write (values )
263
+ self ._exec_write (server_action , values )
317
264
return super ().create ([{}])
318
265
266
+ def _exec_write (self , server_action , vals ):
267
+ active_ids = self .env .context .get ("active_ids" , [])
268
+ model = self .env [server_action .model_id .model ].with_context (mass_edit = True )
269
+ records = model .browse (active_ids )
270
+ records .write (vals )
271
+
319
272
def _prepare_create_values (self , vals_list ):
320
273
return vals_list
321
274
0 commit comments