From f0f7f888d39970cc197a9627ebc0dfd1118ea540 Mon Sep 17 00:00:00 2001 From: David Beguin Date: Thu, 16 Apr 2020 12:00:09 +0000 Subject: [PATCH] [FIX] survey: display only answered question in survey review mode Unanswered questions or sections are now hidden in the survey review mode. Only the question answered by the user will be visible. If the survey was done during a session, the users will see their own answers, even if the theme they selected was not the most voted one (in case of conditional questions). To get the questions to display : - questions that have been answered - + the ones that should have been answered = active questions In session, active questions are based on most voted answers) This commit also fixes the randomized questions handling in most voted answers, as copied predefined questions where and those was not usable in some templates. Task ID: 2230980 X-original-commit: 8ca79727d5a93b91746c1e63d59d08550417906c --- addons/survey/controllers/main.py | 4 +++- addons/survey/models/survey_survey.py | 3 ++- addons/survey/models/survey_user.py | 13 +++++++++++++ addons/survey/views/survey_templates_print.xml | 16 ++++++++++------ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/addons/survey/controllers/main.py b/addons/survey/controllers/main.py index fc6157b7e06..5160e913f7c 100644 --- a/addons/survey/controllers/main.py +++ b/addons/survey/controllers/main.py @@ -552,12 +552,14 @@ class Survey(http.Controller): return request.render("survey.survey_403_page", {'survey': survey_sudo}) return request.render('survey.survey_page_print', { + 'is_html_empty': is_html_empty, 'review': review, 'survey': survey_sudo, 'answer': answer_sudo, + 'questions_to_display': answer_sudo._get_print_questions(), 'scoring_display_correction': survey_sudo.scoring_type == 'scoring_with_answers' and answer_sudo, 'format_datetime': lambda dt: format_datetime(request.env, dt, dt_format=False), - 'format_date': lambda date: format_date(request.env, date) + 'format_date': lambda date: format_date(request.env, date), }) @http.route(['/survey//get_certification_preview'], type="http", auth="user", methods=['GET'], website=True) diff --git a/addons/survey/models/survey_survey.py b/addons/survey/models/survey_survey.py index 89b56d5aa4b..83acb2ad764 100644 --- a/addons/survey/models/survey_survey.py +++ b/addons/survey/models/survey_survey.py @@ -726,9 +726,10 @@ class Survey(models.Model): if not most_voted_answer or votes_by_answer[most_voted_answer] < votes_by_answer[answer]: most_voted_answer_by_questions[question] = answer - # return a fake 'audiance' user_input + # return a fake 'audience' user_input fake_user_input = self.env['survey.user_input'].new({ 'survey_id': self.id, + 'predefined_question_ids': [(6, 0, self._prepare_user_input_predefined_questions().ids)] }) fake_user_input_lines = self.env['survey.user_input.line'] diff --git a/addons/survey/models/survey_user.py b/addons/survey/models/survey_user.py index 4213e0b1662..c62b0d3a671 100644 --- a/addons/survey/models/survey_user.py +++ b/addons/survey/models/survey_user.py @@ -461,6 +461,19 @@ class SurveyUserInput(models.Model): inactive_questions |= question return inactive_questions + def _get_print_questions(self): + """ Get the questions to display : the ones that should have been answered = active questions + In case of session, active questions are based on most voted answers + :return: active survey.question browse records + """ + survey = self.survey_id + if self.is_session_answer: + most_voted_answers = survey._get_session_most_voted_answers() + inactive_questions = most_voted_answers._get_inactive_conditional_questions() + else: + inactive_questions = self._get_inactive_conditional_questions() + return survey.question_ids - inactive_questions + class SurveyUserInputLine(models.Model): _name = 'survey.user_input.line' diff --git a/addons/survey/views/survey_templates_print.xml b/addons/survey/views/survey_templates_print.xml index b5d128af7b1..a1f27ecb8e4 100644 --- a/addons/survey/views/survey_templates_print.xml +++ b/addons/survey/views/survey_templates_print.xml @@ -16,12 +16,16 @@
-
-
-

-
-
- + +
+
+

+
+
+ +