mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-18 13:52:05 +02:00
68 lines
2.3 KiB
Python
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)),
|
|
}
|