from odoo import api, fields, models
from odoo.exceptions import UserError


class DirectiveChooseGroupWizard(models.TransientModel):
    _name = "directive.choose.group.wizard"
    _description = "Choose Directive Template Group"

    template_group_id = fields.Many2one(
        "directive.template.group",
        string="Группа шаблонов",
        required=True,
        # domain=lambda self: self._domain_template_group(),
    )

    @api.model
    def _domain_template_group(self):
        active_model = self.env.context.get("active_model")
        return ["|", ("applicable_model", "=", False), ("applicable_model", "=", active_model or False)]

    def action_confirm(self):
        active_model = self.env.context.get("active_model")
        active_id = self.env.context.get("active_id")
        if not active_model or not active_id:
            raise UserError("No active record in context.")

        record = self.env[active_model].browse(active_id).exists()
        if not record:
            raise UserError("Source record not found.")

        if not hasattr(record, "directive_template_group_id"):
            raise UserError("Model does not support directive template group (directive.mixin is not applied).")

        record.write({"directive_template_group_id": self.template_group_id.id})
        return {"type": "ir.actions.act_window_close"}