2021-03-23 19:15:27 +00:00
|
|
|
# Copyright (C) 2020 Iván Todorovich (https://twitter.com/ivantodorovich)
|
|
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
|
|
|
|
from flectra import api, fields, models
|
|
|
|
|
|
|
|
|
|
|
|
class IrActionsServer(models.Model):
|
|
|
|
_inherit = "ir.actions.server"
|
|
|
|
|
|
|
|
state = fields.Selection(
|
|
|
|
selection_add=[("mass_edit", "Mass Edit Records")],
|
|
|
|
ondelete={"mass_edit": "cascade"},
|
|
|
|
)
|
|
|
|
mass_edit_line_ids = fields.One2many(
|
|
|
|
"mass.editing.line",
|
|
|
|
"server_action_id",
|
|
|
|
)
|
|
|
|
mass_edit_apply_domain_in_lines = fields.Boolean(
|
|
|
|
string="Apply domain in lines",
|
|
|
|
compute="_compute_mass_edit_apply_domain_in_lines",
|
|
|
|
)
|
|
|
|
mass_edit_message = fields.Text(
|
|
|
|
string="Message",
|
|
|
|
help="If set, this message will be displayed in the wizard.",
|
|
|
|
)
|
|
|
|
|
|
|
|
@api.onchange("model_id")
|
|
|
|
def _onchange_model_id(self):
|
|
|
|
# Play nice with other modules
|
|
|
|
res = None
|
|
|
|
if hasattr(super(), "_onchange_model_id"):
|
|
|
|
res = super()._onchange_model_id()
|
|
|
|
# Clear mass_edit_line_ids
|
|
|
|
self.update({"mass_edit_line_ids": [(5, 0, 0)]})
|
|
|
|
return res
|
|
|
|
|
|
|
|
@api.constrains("model_id")
|
|
|
|
def _check_field_model(self):
|
2022-06-29 18:41:04 +00:00
|
|
|
"""Check that all fields belong to the model"""
|
2021-03-23 19:15:27 +00:00
|
|
|
self.mapped("mass_edit_line_ids")._check_field_model()
|
|
|
|
|
|
|
|
@api.depends("mass_edit_line_ids")
|
|
|
|
def _compute_mass_edit_apply_domain_in_lines(self):
|
|
|
|
for record in self:
|
|
|
|
record.mass_edit_apply_domain_in_lines = any(
|
|
|
|
record.mass_edit_line_ids.mapped("apply_domain")
|
|
|
|
)
|
|
|
|
|
|
|
|
def _run_action_mass_edit_multi(self, eval_context=None):
|
2022-06-29 18:41:04 +00:00
|
|
|
"""Show report label wizard"""
|
2021-03-23 19:15:27 +00:00
|
|
|
context = dict(self.env.context)
|
|
|
|
context.update({"server_action_id": self.id})
|
|
|
|
return {
|
|
|
|
"name": self.name,
|
|
|
|
"type": "ir.actions.act_window",
|
|
|
|
"res_model": "mass.editing.wizard",
|
|
|
|
"context": str(context),
|
|
|
|
"view_mode": "form",
|
|
|
|
"target": "new",
|
|
|
|
}
|