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 @@
-
-
-

-
-
- + +
+
+

+
+
+ +