wip [NEW] survey_extra_question_types: add checbkox question type
This commit is contained in:
1
survey_extra_question_types/__init__.py
Normal file
1
survey_extra_question_types/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
from . import models
|
16
survey_extra_question_types/__manifest__.py
Normal file
16
survey_extra_question_types/__manifest__.py
Normal 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,
|
||||||
|
}
|
1
survey_extra_question_types/models/__init__.py
Normal file
1
survey_extra_question_types/models/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
from . import survey
|
42
survey_extra_question_types/models/survey.py
Normal file
42
survey_extra_question_types/models/survey.py
Normal 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)
|
21
survey_extra_question_types/views/survey_templates.xml
Normal file
21
survey_extra_question_types/views/survey_templates.xml
Normal 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>
|
Reference in New Issue
Block a user