from odoo import api, fields, models, _


class DocxCustomField(models.Model):
    _name = "docx.custom.field"
    _description = "Кастомная переменная для DOCX-шаблона"

    report_id = fields.Many2one(
        "ir.actions.report",
        string="DOCX-отчёт",
        required=True,
        ondelete="cascade",
    )

    technical_name = fields.Char(
        string="Техническое имя",
        required=True,
        help="Имя переменной, используемое в шаблоне",
    )

    name = fields.Char(
        string="Название",
        required=True,
        help="Имя для интерфейса.",
    )

    value_python = fields.Text(
        string="Значение (Python)",
        required=True,
        help=(
            "Python-выражение, которое будет вычислено в контексте отчёта.\n"
        ),
    )

    _sql_constraints = [
        (
            "uniq_report_technical_name",
            "unique(report_id, technical_name)",
            "Техническое имя кастомной переменной должно быть уникально в рамках одного отчёта.",
        )
    ]
