diff --git a/addons/survey/i18n/survey.pot b/addons/survey/i18n/survey.pot index 18f42051aff..818dbda0a9e 100644 --- a/addons/survey/i18n/survey.pot +++ b/addons/survey/i18n/survey.pot @@ -5158,6 +5158,14 @@ msgstr "" #. module: survey #. odoo-python +#: code:addons/survey/models/survey_question.py:0 +#, python-format +msgid "" +"You cannot delete questions from surveys \"%(survey_names)s\" while live " +"sessions are in progress." +msgstr "" + +#. module: survey #: code:addons/survey/models/survey_survey.py:0 #, python-format msgid "" diff --git a/addons/survey/models/survey_question.py b/addons/survey/models/survey_question.py index ba123ca20a4..3c07a249902 100644 --- a/addons/survey/models/survey_question.py +++ b/addons/survey/models/survey_question.py @@ -8,7 +8,7 @@ import itertools import operator from odoo import api, fields, models, tools, _ -from odoo.exceptions import ValidationError +from odoo.exceptions import UserError, ValidationError class SurveyQuestion(models.Model): @@ -407,6 +407,19 @@ class SurveyQuestion(models.Model): }) return super().unlink() + # ------------------------------------------------------------ + # CRUD + # ------------------------------------------------------------ + + @api.ondelete(at_uninstall=False) + def _unlink_except_live_sessions_in_progress(self): + running_surveys = self.survey_id.filtered(lambda survey: survey.session_state == 'in_progress') + if running_surveys: + raise UserError(_( + 'You cannot delete questions from surveys "%(survey_names)s" while live sessions are in progress.', + survey_names=', '.join(running_surveys.mapped('title')), + )) + # ------------------------------------------------------------ # VALIDATION # ------------------------------------------------------------