from odoo import api, fields, models class IrActionsServer(models.Model): _inherit = "ir.actions.server" state = fields.Selection( selection_add=[("report_label", "Print self-adhesive labels")] ) label_template = fields.Char( "Label QWeb Template", help="The QWeb template key to render the labels", states={"report_label": [("required", True)]}, ) label_paperformat_id = fields.Many2one( "report.paperformat.label", "Label Paper Format", states={"report_label": [("required", True)]}, ) @api.multi def report_label_associated_view(self): """View the associated qweb templates""" self.ensure_one() action = self.env.ref("base.action_ui_view", raise_if_not_found=False) if not action or len(self.label_template.split(".")) < 2: return False res = action.read()[0] res["domain"] = [ ("type", "=", "qweb"), "|", ("name", "ilike", self.label_template.split(".")[1]), ("key", "=", self.label_template), ] return res @api.model def run_action_report_label_multi(self, action, eval_context=None): """Show report label wizard""" context = dict(self.env.context) context.update( { "label_template": action.label_template, "label_paperformat_id": action.label_paperformat_id.id, "res_model_id": action.model_id.id, } ) return { "name": action.name, "type": "ir.actions.act_window", "res_model": "report.label.wizard", "context": str(context), "view_mode": "form", "target": "new", }