You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.3 KiB
39 lines
1.3 KiB
# -*- coding: utf-8 -*-
|
|
from odoo import models, fields, api, _
|
|
from werkzeug.datastructures import FileStorage
|
|
|
|
TYPES = [
|
|
("free_text", _("Multiple Lines Text Box")),
|
|
("textbox", _("Single Line Text Box")),
|
|
("numerical_box", _("Numerical Value")),
|
|
("date", _("Date")),
|
|
("upload_file", _("Attachment (img/pdf)")),
|
|
("simple_choice", _("Multiple choice: only one answer")),
|
|
("multiple_choice", _("Multiple choice: multiple answers allowed")),
|
|
("matrix", _("Matrix")),
|
|
]
|
|
|
|
|
|
class SurveyQuestion(models.Model):
|
|
_inherit = "survey.question"
|
|
|
|
# question_attachment = fields.Binary(string="Joined attachment")
|
|
type = fields.Selection(selection=TYPES)
|
|
|
|
@api.multi
|
|
def validate_upload_file(self, post, answer_tag):
|
|
self.ensure_one()
|
|
errors = {}
|
|
# Empty answer to mandatory question
|
|
if self.constr_mandatory and not isinstance(post[answer_tag], FileStorage):
|
|
errors.update({answer_tag: self.constr_error_msg})
|
|
# Bad file type
|
|
if (
|
|
isinstance(post[answer_tag], FileStorage)
|
|
and post[answer_tag].content_type != "application/pdf"
|
|
and "image/" not in post[answer_tag].content_type
|
|
):
|
|
errors.update(
|
|
{answer_tag: _("The file you joined is not an image nor a PDF file.")}
|
|
)
|
|
return errors
|