oca-technical/odoo-bringout-oca-management-system-mgmtsystem_evaluation/mgmtsystem_evaluation/models/mgmtsystem_evaluation_template.py
2025-08-29 15:43:03 +02:00

68 lines
2.3 KiB
Python

# Copyright 2023 CreuBlanca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from dateutil.relativedelta import relativedelta
from odoo import api, fields, models
class MgmtsytemEvaluationTemplate(models.Model):
_name = "mgmtsystem.evaluation.template"
_description = "Evaluation Template"
name = fields.Char(required=True)
model_id = fields.Many2one(
"ir.model",
domain=[("is_mgmtsystem_evaluation", "=", True)],
required=True,
ondelete="cascade",
)
active = fields.Boolean(default=True)
model = fields.Char(
store=True, related="model_id.model", string="Model technical name"
)
result_ids = fields.Many2many("mgmtsystem.evaluation.result")
feedback = fields.Html()
user_activity_type_id = fields.Many2one(
"mail.activity.type",
string="Activity for user",
domain=lambda self: [
"|",
("res_model", "=", False),
("res_model", "=", "mgmtsystem.evaluation"),
],
ondelete="set null",
help="""Automatically schedule this activity to the user
(if exists) once the evaluation is started""",
)
manager_activity_type_id = fields.Many2one(
"mail.activity.type",
string="Activity for manager",
domain=lambda self: [
"|",
("res_model", "=", False),
("res_model", "=", "mgmtsystem.evaluation"),
],
ondelete="set null",
help="""Automatically schedule this activity to the Manager
once the evaluation is started""",
)
note = fields.Html()
group_id = fields.Many2one("res.groups")
recurrence_type = fields.Selection(
lambda self: [
(key, value[0]) for key, value in self._get_recurrence_type().items()
]
)
recurrence_period = fields.Integer()
@api.model
def _get_recurrence_type(self):
return {
"daily": ("Daily", lambda r: relativedelta(days=r)),
"weekly": ("Weekly", lambda r: relativedelta(weeks=r)),
"monthly": ("Monthly", lambda r: relativedelta(months=r)),
"quarterly": ("Quarterly", lambda r: relativedelta(months=3 * r)),
"semesterly": ("Semesterly", lambda r: relativedelta(months=6 * r)),
"yearly": ("Yearly", lambda r: relativedelta(years=r)),
}