Skip to content

Commit 31d05b5

Browse files
committed
[IMP] : pre-commit auto fixes
1 parent e119bb5 commit 31d05b5

File tree

4 files changed

+44
-21
lines changed

4 files changed

+44
-21
lines changed

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# generated from manifests external_dependencies
2+
openupgradelib

server_action_mass_edit/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
33
{
44
"name": "Mass Editing",
5-
"version": "18.0.1.1.1",
5+
"version": "19.0.1.0.0",
66
"author": "Serpent Consulting Services Pvt. Ltd., "
77
"Tecnativa, "
88
"GRAP, "

server_action_mass_edit/tests/test_mass_editing.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def test_wiz_fields_view_get(self):
141141
arch = result.get("arch", "")
142142
self.assertTrue(
143143
"selection__email" not in arch,
144-
"Fields view get must return architecture w/o fields" "created dynamicaly",
144+
"Fields view get must return architecture w/o fieldscreated dynamicaly",
145145
)
146146
view_id.mass_server_action_id = self.mass_editing_user
147147
result = self.MassEditingWizard.with_context(
@@ -151,7 +151,7 @@ def test_wiz_fields_view_get(self):
151151
arch = result.get("arch", "")
152152
self.assertTrue(
153153
"selection__email" in arch,
154-
"Fields view get must return architecture with fields" "created dynamicaly",
154+
"Fields view get must return architecture with fieldscreated dynamicaly",
155155
)
156156

157157
# test the code path where we extract an embedded tree for o2m fields
@@ -252,7 +252,7 @@ def test_mass_edit_partner_title(self):
252252
self.assertEqual(
253253
self.partner_title.with_context(lang="de_DE").shortcut,
254254
"Bots.",
255-
"Translation for Partner Title's Abbreviation " "was not loaded properly.",
255+
"Translation for Partner Title's Abbreviation was not loaded properly.",
256256
)
257257
# Removing partner title with mass edit action
258258
vals = {"selection__shortcut": "remove"}
@@ -268,7 +268,7 @@ def test_mass_edit_partner_title(self):
268268
self.assertEqual(
269269
self.partner_title.with_context(lang="de_DE").shortcut,
270270
False,
271-
"Translation for Partner Title's Abbreviation " "was not removed properly.",
271+
"Translation for Partner Title's Abbreviation was not removed properly.",
272272
)
273273

274274
def test_mass_edit_email(self):

server_action_mass_edit/wizard/mass_editing_wizard.py

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,27 +87,48 @@ def onchange(self, values, field_names, fields_spec):
8787
server_action = self.env["ir.actions.server"].sudo().browse(server_action_id)
8888
if not server_action:
8989
return super().onchange(values, field_names, fields_spec)
90-
dynamic_fields = {}
9190

91+
# Collect dynamic field names to filter them out
92+
dynamic_field_names = set()
9293
for line in server_action.mapped("mass_edit_line_ids"):
93-
values["selection__" + line.field_id.name] = "ignore"
94-
values[line.field_id.name] = False
95-
96-
# Make sure there is an entry for the default value retrieved above.
97-
dynamic_fields["selection__" + line.field_id.name] = fields.Selection(
98-
[("ignore", _("Don't touch"))], default="ignore"
99-
)
100-
dynamic_fields[line.field_id.name] = fields.Text([()], default=False)
94+
selection_field = "selection__" + line.field_id.name
95+
field_name = line.field_id.name
96+
dynamic_field_names.add(selection_field)
97+
dynamic_field_names.add(field_name)
98+
99+
# Set default values for dynamic fields
100+
if selection_field not in values:
101+
values[selection_field] = "ignore"
102+
if field_name not in values:
103+
values[field_name] = False
104+
105+
# Filter out dynamic fields before calling super
106+
filtered_values = {
107+
key: value
108+
for key, value in values.items()
109+
if key not in dynamic_field_names
110+
}
111+
filtered_field_names = [
112+
fname for fname in field_names if fname not in dynamic_field_names
113+
]
114+
filtered_fields_spec = {
115+
fname: spec
116+
for fname, spec in fields_spec.items()
117+
if fname not in dynamic_field_names
118+
}
101119

102-
self._fields.update(dynamic_fields)
120+
res = super().onchange(
121+
filtered_values, filtered_field_names, filtered_fields_spec
122+
)
103123

104-
res = super().onchange(values, field_names, fields_spec)
105-
if not res["value"]:
106-
value = {key: value for key, value in values.items() if value is not False}
107-
res["value"] = value
124+
# Ensure dynamic field values are included in the response
125+
if not res.get("value"):
126+
res["value"] = {}
108127

109-
for field in dynamic_fields:
110-
self._fields.pop(field)
128+
# Add dynamic field values to the result
129+
for field_name in dynamic_field_names:
130+
if field_name in values:
131+
res["value"][field_name] = values[field_name]
111132

112133
view_temp = (
113134
self.env["ir.ui.view"]

0 commit comments

Comments
 (0)