diff --git a/addons/hr_recruitment_survey/data/survey_demo.xml b/addons/hr_recruitment_survey/data/survey_demo.xml index 3cdc2fac743..83a76d62f61 100644 --- a/addons/hr_recruitment_survey/data/survey_demo.xml +++ b/addons/hr_recruitment_survey/data/survey_demo.xml @@ -2,7 +2,7 @@ Recruitment Form - open + token diff --git a/addons/survey/__manifest__.py b/addons/survey/__manifest__.py index 2f1c662f84b..fa0129ffd4b 100644 --- a/addons/survey/__manifest__.py +++ b/addons/survey/__manifest__.py @@ -2,7 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. { 'name': 'Surveys', - 'version': '3.2', + 'version': '3.3', 'category': 'Marketing/Surveys', 'description': """ Create beautiful surveys and visualize answers diff --git a/addons/survey/controllers/main.py b/addons/survey/controllers/main.py index fd577a3d01c..80b17617f47 100644 --- a/addons/survey/controllers/main.py +++ b/addons/survey/controllers/main.py @@ -74,7 +74,7 @@ class Survey(http.Controller): if survey_sudo.users_login_required and request.env.user._is_public(): return 'survey_auth' - if (survey_sudo.state == 'closed' or survey_sudo.state == 'draft' or not survey_sudo.active) and (not answer_sudo or not answer_sudo.test_entry): + if not survey_sudo.active and (not answer_sudo or not answer_sudo.test_entry): return 'survey_closed' if (not survey_sudo.page_ids and survey_sudo.questions_layout == 'page_per_section') or not survey_sudo.question_ids: diff --git a/addons/survey/controllers/survey_session_manage.py b/addons/survey/controllers/survey_session_manage.py index c8e18f2935b..ed84444f5b5 100644 --- a/addons/survey/controllers/survey_session_manage.py +++ b/addons/survey/controllers/survey_session_manage.py @@ -28,7 +28,6 @@ class UserInputSession(http.Controller): We limit to sessions opened within the last 7 days to avoid potential abuses. """ if session_code: matching_survey = request.env['survey.survey'].sudo().search([ - ('state', '=', 'open'), ('session_start_time', '>', fields.Datetime.now() - relativedelta(days=7)), ('session_code', '=', session_code), ], limit=1) diff --git a/addons/survey/data/survey_demo_certification.xml b/addons/survey/data/survey_demo_certification.xml index 54cd42ca343..8154e64bcb0 100644 --- a/addons/survey/data/survey_demo_certification.xml +++ b/addons/survey/data/survey_demo_certification.xml @@ -12,7 +12,7 @@ MyCompany Vendor Certification 4ead4bc8-b8f2-4760-a682-1fde8ddb95ac - open + public page_per_question diff --git a/addons/survey/data/survey_demo_conditional.xml b/addons/survey/data/survey_demo_conditional.xml index 9201bcdcbaa..740337ee0d1 100644 --- a/addons/survey/data/survey_demo_conditional.xml +++ b/addons/survey/data/survey_demo_conditional.xml @@ -4,7 +4,7 @@ Burger Quiz burger00-quiz-1234-abcd-344ca2tgb31e - open + public scoring_with_answers diff --git a/addons/survey/data/survey_demo_feedback.xml b/addons/survey/data/survey_demo_feedback.xml index ef23de6bcc1..ed46b4bc92b 100644 --- a/addons/survey/data/survey_demo_feedback.xml +++ b/addons/survey/data/survey_demo_feedback.xml @@ -4,7 +4,7 @@ Feedback Form b135640d-14d4-4748-9ef6-344ca256531e - open + public page_per_section diff --git a/addons/survey/data/survey_demo_quiz.xml b/addons/survey/data/survey_demo_quiz.xml index 6f4ce8a89c2..eb112e5677c 100644 --- a/addons/survey/data/survey_demo_quiz.xml +++ b/addons/survey/data/survey_demo_quiz.xml @@ -4,7 +4,7 @@ Quiz about our Company b137640d-9876-1234-abcd-344ca256531e - open + public scoring_with_answers diff --git a/addons/survey/models/survey_survey.py b/addons/survey/models/survey_survey.py index ed7ad478bd1..771e23e70a7 100644 --- a/addons/survey/models/survey_survey.py +++ b/addons/survey/models/survey_survey.py @@ -55,10 +55,7 @@ class Survey(models.Model): help="This message will be displayed when survey is completed") background_image = fields.Binary("Background Image") active = fields.Boolean("Active", default=True) - state = fields.Selection(selection=[ - ('draft', 'Draft'), ('open', 'In Progress'), ('closed', 'Closed') - ], string="Survey Stage", default='draft', required=True, - group_expand='_read_group_states') + user_id = fields.Many2one('res.users', string='Responsible', tracking=True, default=lambda self: self.env.user) # questions question_and_page_ids = fields.One2many('survey.question', 'survey_id', string='Sections and Questions', copy=True) page_ids = fields.One2many('survey.question', string='Pages', compute="_compute_page_and_question_ids") @@ -292,10 +289,6 @@ class Survey(models.Model): not survey.certification: survey.certification_give_badge = False - def _read_group_states(self, values, domain, order): - selection = self.env['survey.survey'].fields_get(allfields=['state'])['state']['selection'] - return [s[0] for s in selection] - # ------------------------------------------------------------ # CRUD # ------------------------------------------------------------ @@ -400,9 +393,7 @@ class Survey(models.Model): raise exceptions.UserError(_('Creating test token is not allowed for you.')) else: if not self.active: - raise exceptions.UserError(_('Creating token for archived surveys is not allowed.')) - elif self.state == 'closed': - raise exceptions.UserError(_('Creating token for closed surveys is not allowed.')) + raise exceptions.UserError(_('Creating token for closed/archived surveys is not allowed.')) if self.access_mode == 'authentication': # signup possible -> should have at least a partner to create an account if self.users_can_signup and not user and not partner: @@ -799,22 +790,13 @@ class Survey(models.Model): # ACTIONS # ------------------------------------------------------------ - def action_draft(self): - self.write({'state': 'draft'}) - - def action_open(self): - self.write({'state': 'open'}) - - def action_close(self): - self.write({'state': 'closed'}) - def action_send_survey(self): """ Open a window to compose an email, pre-filled with the survey message """ # Ensure that this survey has at least one page with at least one question. if (not self.page_ids and self.questions_layout == 'page_per_section') or not self.question_ids: raise exceptions.UserError(_('You cannot send an invitation for a survey that has no questions.')) - if self.state == 'closed': + if not self.active: raise exceptions.UserError(_("You cannot send invitations for closed surveys.")) template = self.env.ref('survey.mail_template_user_input_invite', raise_if_not_found=False) diff --git a/addons/survey/tests/common.py b/addons/survey/tests/common.py index 2ed13da1047..f30167113f4 100644 --- a/addons/survey/tests/common.py +++ b/addons/survey/tests/common.py @@ -247,7 +247,6 @@ class TestSurveyCommon(SurveyCase): 'access_mode': 'public', 'users_login_required': True, 'users_can_go_back': False, - 'state': 'open', }) self.page_0 = self.env['survey.question'].with_user(self.survey_manager).create({ 'title': 'First page', diff --git a/addons/survey/tests/test_certification_badge.py b/addons/survey/tests/test_certification_badge.py index cb5924e39e2..762feba5d7c 100644 --- a/addons/survey/tests/test_certification_badge.py +++ b/addons/survey/tests/test_certification_badge.py @@ -17,7 +17,6 @@ class TestCertificationBadge(common.TestSurveyCommon): 'users_login_required': True, 'scoring_type': 'scoring_with_answers', 'certification': True, - 'state': 'open', }) self.certification_survey_2 = self.env['survey.survey'].with_user(self.survey_manager).create({ @@ -26,7 +25,6 @@ class TestCertificationBadge(common.TestSurveyCommon): 'users_login_required': True, 'scoring_type': 'scoring_with_answers', 'certification': True, - 'state': 'open', }) self.certification_badge = self.env['gamification.badge'].with_user(self.survey_manager).create({ @@ -160,7 +158,6 @@ class TestCertificationBadge(common.TestSurveyCommon): 'certification': True, 'certification_give_badge': True, 'certification_badge_id': self.certification_badge.id, - 'state': 'open' } survey_1 = self.env['survey.survey'].create(vals.copy()) vals.update({'certification_badge_id': self.certification_badge_2.id}) diff --git a/addons/survey/tests/test_certification_flow.py b/addons/survey/tests/test_certification_flow.py index a88f2f8a19f..acf09aad3da 100644 --- a/addons/survey/tests/test_certification_flow.py +++ b/addons/survey/tests/test_certification_flow.py @@ -28,7 +28,6 @@ class TestCertificationFlow(common.TestSurveyCommon, HttpCase): 'certification_mail_template_id': self.env.ref('survey.mail_template_certification').id, 'is_time_limited': True, 'time_limit': 10, - 'state': 'open', }) q01 = self._add_question( @@ -135,7 +134,6 @@ class TestCertificationFlow(common.TestSurveyCommon, HttpCase): 'title': 'User randomized Certification', 'questions_layout': 'page_per_section', 'questions_selection': 'random', - 'state': 'open', 'scoring_type': 'scoring_without_answers', }) diff --git a/addons/survey/tests/test_survey_compute_pages_questions.py b/addons/survey/tests/test_survey_compute_pages_questions.py index d59dbf904d6..335683d445f 100644 --- a/addons/survey/tests/test_survey_compute_pages_questions.py +++ b/addons/survey/tests/test_survey_compute_pages_questions.py @@ -9,7 +9,6 @@ class TestSurveyComputePagesQuestions(common.TestSurveyCommon): with self.with_user('survey_manager'): survey = self.env['survey.survey'].create({ 'title': 'Test compute survey', - 'state': 'open', }) page_0 = self.env['survey.question'].create({ diff --git a/addons/survey/tests/test_survey_flow.py b/addons/survey/tests/test_survey_flow.py index d0c2921ae80..08a478fd37a 100644 --- a/addons/survey/tests/test_survey_flow.py +++ b/addons/survey/tests/test_survey_flow.py @@ -26,7 +26,6 @@ class TestSurveyFlow(common.TestSurveyCommon, HttpCase): 'access_mode': 'public', 'users_login_required': False, 'questions_layout': 'page_per_section', - 'state': 'open' }) # First page is about customer data diff --git a/addons/survey/tests/test_survey_invite.py b/addons/survey/tests/test_survey_invite.py index 6a93ee45d56..14c58d13c17 100644 --- a/addons/survey/tests/test_survey_invite.py +++ b/addons/survey/tests/test_survey_invite.py @@ -34,7 +34,7 @@ class TestSurveyInvite(common.TestSurveyCommon): # closed self.env['survey.survey'].with_user(self.survey_manager).create({ 'title': 'S0', - 'state': 'closed', + 'active': False, 'question_and_page_ids': [ (0, 0, {'is_page': True, 'title': 'P0', 'sequence': 1}), (0, 0, {'title': 'Q0', 'sequence': 2, 'question_type': 'text_box'}) diff --git a/addons/survey/tests/test_survey_security.py b/addons/survey/tests/test_survey_security.py index 191e8edd711..5ef21df853a 100644 --- a/addons/survey/tests/test_survey_security.py +++ b/addons/survey/tests/test_survey_security.py @@ -331,12 +331,9 @@ class TestSurveySecurityControllers(common.TestSurveyCommon, HttpCase): def test_survey_start_short(self): # avoid name clash with existing data surveys = self.env['survey.survey'].search([ - ('state', '=', 'open'), ('session_state', 'in', ['ready', 'in_progress']) ]) - surveys.write({'state': 'done'}) self.survey.write({ - 'state': 'open', 'session_state': 'ready', 'session_code': '123456', 'session_start_time': datetime.datetime.now(), @@ -353,12 +350,12 @@ class TestSurveySecurityControllers(common.TestSurveyCommon, HttpCase): response = self.url_open(f'/s/______') self.assertFalse(self.survey.title in response.text) - # right short token, but wrong state - self.survey.state = 'draft' + # right short token, but closed survey + self.survey.action_archive() response = self.url_open(f'/s/123456') self.assertFalse(self.survey.title in response.text) # right short token, but wrong `session_state` - self.survey.write({'state': 'open', 'session_state': False}) + self.survey.write({'session_state': False, 'active': True}) response = self.url_open(f'/s/123456') self.assertFalse(self.survey.title in response.text) diff --git a/addons/survey/tests/test_survey_ui_certification.py b/addons/survey/tests/test_survey_ui_certification.py index 9ba15c55a61..ceacd712134 100644 --- a/addons/survey/tests/test_survey_ui_certification.py +++ b/addons/survey/tests/test_survey_ui_certification.py @@ -14,7 +14,6 @@ class TestUiCertification(HttpCaseWithUserDemo): self.survey_certification = self.env['survey.survey'].create({ 'title': 'MyCompany Vendor Certification', 'access_token': '4ead4bc8-b8f2-4760-a682-1fde8daaaaac', - 'state': 'open', 'access_mode': 'public', 'users_can_go_back': True, 'users_login_required': True, diff --git a/addons/survey/tests/test_survey_ui_feedback.py b/addons/survey/tests/test_survey_ui_feedback.py index 90f86a48cbd..3b49af6a782 100644 --- a/addons/survey/tests/test_survey_ui_feedback.py +++ b/addons/survey/tests/test_survey_ui_feedback.py @@ -13,7 +13,6 @@ class TestUiFeedback(HttpCaseWithUserDemo): self.survey_feedback = self.env['survey.survey'].create({ 'title': 'User Feedback Form', 'access_token': 'b137640d-14d4-4748-9ef6-344caaaaaae', - 'state': 'open', 'access_mode': 'public', 'users_can_go_back': True, 'questions_layout': 'page_per_section', diff --git a/addons/survey/tests/test_survey_ui_session.py b/addons/survey/tests/test_survey_ui_session.py index 53dd81ea62b..8d259d3387b 100644 --- a/addons/survey/tests/test_survey_ui_session.py +++ b/addons/survey/tests/test_survey_ui_session.py @@ -35,7 +35,6 @@ class TestUiSession(HttpCase): survey_session = self.env['survey.survey'].create({ 'title': 'User Session Survey', 'access_token': 'b137640d-14d4-4748-9ef6-344caaaaafe', - 'state': 'open', 'access_mode': 'public', 'users_can_go_back': False, 'questions_layout': 'page_per_question', diff --git a/addons/survey/views/survey_survey_views.xml b/addons/survey/views/survey_survey_views.xml index 71a03990fff..826c359db1d 100644 --- a/addons/survey/views/survey_survey_views.xml +++ b/addons/survey/views/survey_survey_views.xml @@ -9,21 +9,19 @@
-
@@ -56,6 +54,7 @@
+ @@ -165,7 +164,6 @@ - @@ -181,7 +179,6 @@ survey.survey - @@ -192,6 +189,7 @@ +
Edit Survey - Share + Share Delete
-
+
@@ -270,9 +268,6 @@ domain="[('activity_ids.date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/> - - - @@ -281,7 +276,6 @@ Surveys survey.survey kanban,tree,form,activity - {'search_default_groupby_state': 1}

Add a new survey diff --git a/addons/test_website_slides_full/tests/test_ui_wslides.py b/addons/test_website_slides_full/tests/test_ui_wslides.py index c3e999db7a8..9956f7e59c6 100644 --- a/addons/test_website_slides_full/tests/test_ui_wslides.py +++ b/addons/test_website_slides_full/tests/test_ui_wslides.py @@ -54,7 +54,6 @@ class TestUi(TestUICommon): furniture_survey = self.env['survey.survey'].create({ 'title': 'Furniture Creation Certification', 'access_token': '5632a4d7-48cf-aaaa-8c52-2174d58cf50b', - 'state': 'open', 'access_mode': 'public', 'users_can_go_back': True, 'users_login_required': True, diff --git a/addons/website_slides_survey/data/survey_demo.xml b/addons/website_slides_survey/data/survey_demo.xml index 114a3f3dab7..d08ed74615a 100644 --- a/addons/website_slides_survey/data/survey_demo.xml +++ b/addons/website_slides_survey/data/survey_demo.xml @@ -5,7 +5,7 @@ Furniture Creation Certification 5632a4d7-48cf-4d25-8c52-2174d58cf50b - open + public diff --git a/addons/website_slides_survey/tests/test_course_certification_failure.py b/addons/website_slides_survey/tests/test_course_certification_failure.py index 8b206faefb8..749e2d74e0e 100644 --- a/addons/website_slides_survey/tests/test_course_certification_failure.py +++ b/addons/website_slides_survey/tests/test_course_certification_failure.py @@ -18,7 +18,6 @@ class TestCourseCertificationFailureFlow(TestSurveyCommon): 'is_attempts_limited': True, 'scoring_success_min': 100.0, 'attempts_limit': 2, - 'state': 'open', }) self._add_question(