Odoo modules related to surveys
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.8 KiB

from datetime import timedelta
from pytz import timezone, utc
from odoo import models, fields, api
class SurveySurvey(models.Model):
_inherit = "survey.survey"
@api.model
def cron_close_passed_deadline_survey(self):
to_close = self.search(
[
("deadline", "!=", False),
("deadline", "<", fields.Date.today()),
("auto_close", "=", True),
]
)
if to_close:
to_close.action_archive()
deadline = fields.Date(
string="Deadline",
copy=False,
tracking=True,
help="The day after date at 00:00 will be set as default answer deadline on survey sharing.",
)
auto_close = fields.Boolean(
string="Auto closing",
help="If checked, this survey will be automatically closed after the deadline.",
)
active = fields.Boolean(
tracking=True,
)
def action_send_survey(self):
self.ensure_one()
action = super(SurveySurvey, self).action_send_survey()
action["context"].update(
{
"default_deadline": timezone(self.env.user.tz)
.localize(
fields.Datetime.to_datetime(fields.Date.to_string(self.deadline))
+ timedelta(days=1)
)
.astimezone(utc),
}
)
return action
@api.onchange("deadline")
def onchange_deadline(self):
self.ensure_one()
if not self.deadline and self.auto_close:
self.auto_close = False
def _track_subtype(self, init_values):
self.ensure_one()
if "active" in init_values:
return self.env.ref(
"survey_deadline_autoclose.mail_message_subtype_survey_closing"
)
return super(SurveySurvey, self)._track_subtype(init_values)