Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 4eb1f6572bfe6497b3811c0b3cc04dee61339475
  • 12.0 par défaut protégée
2 résultats

survey_question.py

Blame
  • survey_question.py 2,41 Kio
    # © 2020 Le Filament (<https://www.le-filament.com>)
    # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
    
    from odoo import api, fields, models
    import base64
    
    
    class SurveyQuestion(models.Model):
        _inherit = 'survey.question'
    
        type = fields.Selection([
            ('free_text', 'Multiple Lines Text Box'),
            ('textbox', 'Single Line Text Box'),
            ('numerical_box', 'Numerical Value'),
            ('date', 'Date'),
            ('upload_file', 'Télécharger un fichier'),
            ('simple_choice', 'Multiple choice: only one answer'),
            ('multiple_choice', 'Multiple choice: multiple answers allowed'),
            ('matrix', 'Matrix')], string='Type of Question', default='free_text', required=True)
    
        @api.multi
        def validate_upload_file(self, post, answer_tag):
            self.ensure_one()
            errors = {}
            answer = post[answer_tag]
            # Empty answer to mandatory question
            if self.constr_mandatory and not answer:
                errors.update({answer_tag: self.constr_error_msg})
            return errors
    
    
    class SurveyUserInputLine(models.Model):
        _inherit = 'survey.user_input_line'
    
        answer_type = fields.Selection([
            ('text', 'Text'),
            ('number', 'Number'),
            ('date', 'Date'),
            ('free_text', 'Free Text'),
            ('upload_file', 'Upload file'),
            ('suggestion', 'Suggestion'),
            ('list', 'List box'),
            ('matrix_models', 'Matrix models')], string='Answer Type')
    
        file = fields.Binary('Fichier téléchargé')
        file_type = fields.Char('Type de fichier')
    
        @api.model
        def save_line_upload_file(self, user_input_id, question, post, answer_tag):
            vals = {
                'user_input_id': user_input_id,
                'question_id': question.id,
                'survey_id': question.survey_id.id,
                'skipped': False
            }
    
            file = base64.encodebytes(post[answer_tag].read()) if post[answer_tag] else None
    
            if file:
                vals.update({'answer_type': 'upload_file', 'file': file, 'file_type': post[answer_tag].mimetype})
            else:
                vals.update({'answer_type': None, 'skipped': True})
    
            old_uil = self.search([
                ('user_input_id', '=', user_input_id),
                ('survey_id', '=', question.survey_id.id),
                ('question_id', '=', question.id)
            ])
            if old_uil:
                old_uil.write(vals)
            else:
                old_uil.create(vals)
            return True