[ADD] survey_extra_fields : file question type
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m39s
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m39s
This commit is contained in:
3
survey_extra_fields/models/__init__.py
Normal file
3
survey_extra_fields/models/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from . import survey_question
|
||||
from . import survey_user_input
|
||||
from . import survey_user_input_line
|
||||
11
survey_extra_fields/models/survey_question.py
Normal file
11
survey_extra_fields/models/survey_question.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class SurveyQuestion(models.Model):
|
||||
_inherit = "survey.question"
|
||||
|
||||
question_type = fields.Selection(
|
||||
selection_add=[("file", "File")]
|
||||
)
|
||||
34
survey_extra_fields/models/survey_user_input.py
Normal file
34
survey_extra_fields/models/survey_user_input.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
import json
|
||||
|
||||
from odoo import models
|
||||
|
||||
|
||||
class SurveyUserInput(models.Model):
|
||||
_inherit = "survey.user_input"
|
||||
|
||||
def save_lines(self, question, answer, comment=None):
|
||||
if question.question_type == "file":
|
||||
old_answers = self.env["survey.user_input.line"].search([
|
||||
("user_input_id", "=", self.id),
|
||||
("question_id", "=", question.id),
|
||||
])
|
||||
vals = {
|
||||
"user_input_id": self.id,
|
||||
"question_id": question.id,
|
||||
"skipped": False,
|
||||
"answer_type": "file",
|
||||
}
|
||||
if answer:
|
||||
file_data = json.loads(answer)
|
||||
vals["value_file"] = file_data.get("data")
|
||||
vals["value_file_fname"] = file_data.get("name")
|
||||
else:
|
||||
vals.update(answer_type=None, skipped=True)
|
||||
if old_answers:
|
||||
old_answers.write(vals)
|
||||
else:
|
||||
self.env["survey.user_input.line"].create(vals)
|
||||
else:
|
||||
return super().save_lines(question, answer, comment=comment)
|
||||
17
survey_extra_fields/models/survey_user_input_line.py
Normal file
17
survey_extra_fields/models/survey_user_input_line.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class SurveyUserInputLine(models.Model):
|
||||
_inherit = "survey.user_input.line"
|
||||
|
||||
answer_type = fields.Selection(
|
||||
selection_add=[("file", "File")]
|
||||
)
|
||||
|
||||
def _compute_display_name(self):
|
||||
super()._compute_display_name()
|
||||
for line in self:
|
||||
if line.answer_type == "file" and line.value_file_fname:
|
||||
line.display_name = line.value_file_fname
|
||||
Reference in New Issue
Block a user