wip [NEW] survey_extra_question_types: add checbkox question type

This commit is contained in:
2025-08-21 10:39:14 +02:00
parent 963fc5b9c0
commit 85f218d9d1
5 changed files with 81 additions and 0 deletions

View File

@@ -0,0 +1 @@
from . import models

View File

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

View File

@@ -0,0 +1 @@
from . import survey

View File

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

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- template for checkbox -->
<template id="template_checkbox" name="Extra question type Checkbox">
<input
type="checkbox"
class="form-check-input"
t-att-name="question.id"
t-att-data-question-type="question.question_type"
/>
<!-- TODO: je n'arrive pas à faire en sorte que la valeur du champs soit renvoyé dans les params POST lors de la soumission du formulaire -->
<!-- Je pense qu'il faut surcharger la fonction js _prepareSubmitValues dans le fichier survey_form.js -->
</template>
<template id="survey_extra_question_types_question_container_inherited" inherit_id="survey.question_container" name="Question">
<xpath expr="//div[1]/t" position="after">
<t t-if="question.question_type == 'checkbox'"><t t-call="survey_extra_question_types.template_checkbox" /></t>
</xpath>
</template>
</odoo>