[ADD] survey_extra_fields : file question type
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m39s

This commit is contained in:
2026-02-17 12:27:22 +01:00
parent e1c2be8939
commit 0d4a91f1b7
14 changed files with 626 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
from . import survey_question
from . import survey_user_input
from . import survey_user_input_line

View 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")]
)

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

View 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