diff --git a/survey_extra_question_types/__init__.py b/survey_extra_question_types/__init__.py new file mode 100644 index 0000000..9a7e03e --- /dev/null +++ b/survey_extra_question_types/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/survey_extra_question_types/__manifest__.py b/survey_extra_question_types/__manifest__.py new file mode 100644 index 0000000..8719e20 --- /dev/null +++ b/survey_extra_question_types/__manifest__.py @@ -0,0 +1,16 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Survey extra question types", + 'summary': 'Add more question types in the surveys', + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Elabore", + "website": "https://www.elabore.coop", + "category": "", + "depends": ["survey"], + "data": [ + "views/survey_templates.xml" + ], + "installable": True, +} diff --git a/survey_extra_question_types/models/__init__.py b/survey_extra_question_types/models/__init__.py new file mode 100644 index 0000000..7e49d37 --- /dev/null +++ b/survey_extra_question_types/models/__init__.py @@ -0,0 +1 @@ +from . import survey diff --git a/survey_extra_question_types/models/survey.py b/survey_extra_question_types/models/survey.py new file mode 100644 index 0000000..b0c8e75 --- /dev/null +++ b/survey_extra_question_types/models/survey.py @@ -0,0 +1,42 @@ +from odoo import fields, models + + +class SurveyQuestion(models.Model): + _inherit = "survey.question" + _description = "Inherit Survey Question for extra question types" + + question_type = fields.Selection(selection_add=[ + ("checkbox", "Checkbox"), + ]) + + # TODO : remove answers page form checkbox type + answers section in options tab + +class SurveyUserInputLine(models.Model): + _inherit = "survey.user_input.line" + _description = "Survey User Input Line for extra question types" + + value_checkbox = fields.Boolean("Checkbox answer") + + answer_type = fields.Selection(selection_add=[ + ("checkbox", "Checkbox") + ]) + +class SurveyUserInput(models.Model): + _inherit = "survey.user_input" + _description = "Survey User Input for extra question types" + + def save_lines(self, question, answer, comment=None): + """ Save answers to questions, depending on question type + + If an answer already exists for question and user_input_id, it will be + overwritten (or deleted for 'choice' questions) (in order to maintain data consistency). + """ + old_answers = self.env['survey.user_input.line'].search([ + ('user_input_id', '=', self.id), + ('question_id', '=', question.id) + ]) + + if question.question_type in ["checkbox"]: + return super(SurveyUserInput, self)._save_line_simple_answer(question, old_answers, answer) + + return super(SurveyUserInput, self).save_lines(question=question, answer=answer) diff --git a/survey_extra_question_types/views/survey_templates.xml b/survey_extra_question_types/views/survey_templates.xml new file mode 100644 index 0000000..2bee451 --- /dev/null +++ b/survey_extra_question_types/views/survey_templates.xml @@ -0,0 +1,21 @@ + + + + + + + +