29 lines
1.0 KiB
Python
29 lines
1.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models
|
|
|
|
class SurveySurvey(models.Model):
|
|
_inherit = 'survey.survey'
|
|
|
|
scoring_formula = fields.Selection([
|
|
('total', 'Total Score'),
|
|
('average', 'Average Score'),
|
|
], string='Scoring Formula', default='total', required=True)
|
|
|
|
@api.depends(
|
|
'question_and_page_ids',
|
|
'question_and_page_ids.suggested_answer_ids',
|
|
'question_and_page_ids.suggested_answer_ids.answer_score',
|
|
'question_and_page_ids.question_type',
|
|
'question_and_page_ids.scale_max',
|
|
'question_and_page_ids.scale_multiplier',
|
|
)
|
|
def _compute_scoring_max_obtainable(self):
|
|
super()._compute_scoring_max_obtainable()
|
|
for survey in self:
|
|
scale_max_obtainable = sum(
|
|
(question.scale_max * question.scale_multiplier)
|
|
for question in survey.question_ids
|
|
if question.question_type == 'scale' and question.is_scored_question
|
|
)
|
|
survey.scoring_max_obtainable += scale_max_obtainable
|