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.
53 lines
1.8 KiB
53 lines
1.8 KiB
from odoo import models, fields, api, _
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class SurveySurvey(models.Model):
|
|
_inherit = 'survey.survey'
|
|
|
|
@api.model
|
|
def close_deadline_survey(self):
|
|
deadline = self.search([
|
|
('date_deadline', '!=', False),
|
|
('date_deadline', '<', fields.Date.today()),
|
|
])
|
|
to_close = deadline.filtered('auto_close')
|
|
if to_close:
|
|
to_close.action_close_survey()
|
|
for survey in deadline - to_close:
|
|
survey.message_post(subtype='survey_deadline_autoclose.mail_message_subtype_survey_deadline')
|
|
|
|
date_deadline = fields.Date(string="Deadline", copy=False, track_visibility='onchange')
|
|
auto_close = fields.Boolean(string="Auto close", default=False, help="If checked, the survey will be closed automatically when deadline is overpassed.", track_visibility='onchange')
|
|
|
|
# ACTIONS
|
|
|
|
@api.multi
|
|
def action_send_survey(self):
|
|
self.ensure_one()
|
|
action = super(SurveySurvey, self).action_send_survey()
|
|
action['context'].update({
|
|
'default_date_deadline': self.date_deadline,
|
|
})
|
|
return action
|
|
|
|
@api.multi
|
|
def action_close_survey(self):
|
|
stage = self.env['survey.stage'].search([('closed', '=', True)], limit=1)
|
|
if not stage:
|
|
raise UserError(_("No \"closed\" status found, the requested operation is impossible."))
|
|
self.write({
|
|
'stage_id': stage.id
|
|
})
|
|
for survey in self:
|
|
survey.message_post(subtype='survey_deadline_autoclose.mail_message_subtype_survey_closed')
|
|
|
|
# ONCHANGES
|
|
|
|
@api.onchange('date_deadline')
|
|
def onchange_is_template(self):
|
|
self.ensure_one()
|
|
if not self.date_deadline:
|
|
self.auto_close = False
|
|
elif not self.auto_close:
|
|
self.auto_close = True
|