diff --git a/addons/survey/models/survey_user.py b/addons/survey/models/survey_user.py index b7fa5f1f92a..8cfa9e9dde4 100644 --- a/addons/survey/models/survey_user.py +++ b/addons/survey/models/survey_user.py @@ -199,12 +199,14 @@ class SurveyUserInputLine(models.Model): _name = 'survey.user_input_line' _description = 'Survey User Input Line' _rec_name = 'user_input_id' + _order = 'question_sequence,id' # survey data user_input_id = fields.Many2one('survey.user_input', string='User Input', ondelete='cascade', required=True) survey_id = fields.Many2one(related='user_input_id.survey_id', string='Survey', store=True, readonly=False) question_id = fields.Many2one('survey.question', string='Question', ondelete='cascade', required=True) page_id = fields.Many2one(related='question_id.page_id', string="Section", readonly=False) + question_sequence = fields.Integer('Sequence', related='question_id.sequence', store=True) # answer skipped = fields.Boolean('Skipped') answer_type = fields.Selection([ @@ -222,6 +224,15 @@ class SurveyUserInputLine(models.Model): value_suggested = fields.Many2one('survey.label', string="Suggested answer") value_suggested_row = fields.Many2one('survey.label', string="Row answer") answer_score = fields.Float('Score') + answer_is_correct = fields.Boolean('Correct', compute='_compute_answer_is_correct') + + @api.depends('value_suggested', 'question_id') + def _compute_answer_is_correct(self): + for answer in self: + if answer.value_suggested and answer.question_id.question_type in ['simple_choice', 'multiple_choice']: + answer.answer_is_correct = answer.value_suggested.is_correct + else: + answer.answer_is_correct = False @api.constrains('skipped', 'answer_type') def _answered_or_skipped(self): diff --git a/addons/survey/views/survey_user_views.xml b/addons/survey/views/survey_user_views.xml index fd7249da958..3d9384ead5d 100644 --- a/addons/survey/views/survey_user_views.xml +++ b/addons/survey/views/survey_user_views.xml @@ -66,11 +66,14 @@ + + - + +