From 7894951f83cad0755d4c327619e921fb61dce5ab Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Tue, 19 May 2026 17:08:53 +0700 Subject: [PATCH] feat: add is_disc_test flag to surveys and restrict DISC validation logic to relevant surveys --- .gitignore | 8 ++++++++ __manifest__.py | 1 + data/survey_data.xml | 1 + models/__init__.py | 1 + models/survey_survey.py | 7 +++++++ models/survey_user_input.py | 8 ++++++++ views/survey_survey_views.xml | 13 +++++++++++++ 7 files changed, 39 insertions(+) create mode 100644 .gitignore create mode 100644 models/survey_survey.py create mode 100644 views/survey_survey_views.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d1ba00d --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +__pycache__/ +*.py[cod] +*$py.class +.DS_Store +.idea/ +.vscode/ +*.swp +*.swo diff --git a/__manifest__.py b/__manifest__.py index 3a28c7e..eecf617 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -14,6 +14,7 @@ 'depends': ['survey'], 'data': [ 'data/survey_data.xml', + 'views/survey_survey_views.xml', 'views/survey_user_input_views.xml', 'views/survey_templates.xml', 'report/survey_disc_report.xml', diff --git a/data/survey_data.xml b/data/survey_data.xml index ada15d6..90a772e 100644 --- a/data/survey_data.xml +++ b/data/survey_data.xml @@ -6,6 +6,7 @@ no_scoring one_page + diff --git a/models/__init__.py b/models/__init__.py index 011c120..3771b66 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- +from . import survey_survey from . import survey_question_answer from . import survey_user_input diff --git a/models/survey_survey.py b/models/survey_survey.py new file mode 100644 index 0000000..aa4458d --- /dev/null +++ b/models/survey_survey.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +from odoo import fields, models + +class SurveySurvey(models.Model): + _inherit = 'survey.survey' + + is_disc_test = fields.Boolean("Is DISC Test", default=False) diff --git a/models/survey_user_input.py b/models/survey_user_input.py index 2bac398..b357753 100644 --- a/models/survey_user_input.py +++ b/models/survey_user_input.py @@ -29,6 +29,8 @@ class SurveyUserInput(models.Model): def _mark_done(self): """ Strictly enforce DISC validation: Exactly 1 P and 1 K per set. """ for rec in self: + if not rec.survey_id.is_disc_test: + continue # Group lines by question lines_by_question = {} for line in rec.user_input_line_ids: @@ -56,6 +58,12 @@ class SurveyUserInput(models.Model): @api.depends('user_input_line_ids', 'user_input_line_ids.suggested_answer_id') def _compute_disc_scores(self): for rec in self: + if not rec.survey_id.is_disc_test: + rec.p_d = rec.p_i = rec.p_s = rec.p_c = rec.p_star = 0 + rec.k_d = rec.k_i = rec.k_s = rec.k_c = rec.k_star = 0 + rec.c_d = rec.c_i = rec.c_s = rec.c_c = 0 + rec.disc_profile = False + continue # Initialize counts counts = { 'p': {'D': 0, 'I': 0, 'S': 0, 'C': 0, '*': 0}, diff --git a/views/survey_survey_views.xml b/views/survey_survey_views.xml new file mode 100644 index 0000000..df931b2 --- /dev/null +++ b/views/survey_survey_views.xml @@ -0,0 +1,13 @@ + + + + survey.survey.view.form.inherit.disc + survey.survey + + + + + + + +