diff --git a/models/survey_user_input.py b/models/survey_user_input.py index 14df35da044cc9ed9e48eaf70560fc4ad1e19930..20b76fccfa169b17fdfddc7b58f6db44a52d2741 100644 --- a/models/survey_user_input.py +++ b/models/survey_user_input.py @@ -4,6 +4,7 @@ from werkzeug.urls import url_join from odoo import Command, fields, models +from odoo.exceptions import UserError class SurveyUserInput(models.Model): @@ -120,6 +121,21 @@ class SurveyUserInput(models.Model): self.ensure_one() self.update({"state": "in_progress", "is_resent": True}) + def action_create_student(self): + if self.student_id: + raise UserError("Un stagiaire est déjà associé à cette réponse") + if not self.training_id: + raise UserError( + "Impossible de créer le stagiaire, aucune formation " + "n'est associée à cette réponse" + ) + if self.training_survey_type != "subscribe": + raise UserError( + "On ne peut créer un stagiaire qu'à partir d'une réponse " + "de questionnaire d'inscription" + ) + self._create_student() + # ------------------------------------------------------ # Business method # ------------------------------------------------------ diff --git a/views/survey_user_input.xml b/views/survey_user_input.xml index 4c4421bb8c72b1555bef4b8a3bf96b428e1f885b..28b1d06be59dd1faa3816b17b4de2a9007568a57 100644 --- a/views/survey_user_input.xml +++ b/views/survey_user_input.xml @@ -7,6 +7,14 @@ <field name="inherit_id" ref="survey.survey_user_input_view_form" /> <field name="priority">60</field> <field name="arch" type="xml"> + <xpath expr="//header" position="inside"> + <button + name="action_create_student" + type="object" + string="ObjectButton" + attrs="{'invisible': ['|', '|', ('student_id', '!=', False), ('training_id', '=', False), ('training_survey_type', '!=', 'subscribe')]}" + /> + </xpath> <xpath expr="//sheet/group/group" position="inside"> <field name="comment" /> <field @@ -38,6 +46,11 @@ name="training_id" attrs="{'invisible': [('training_survey_type', '=', False)]}" /> + <field + name="student_id" + readonly="1" + attrs="{'invisible': [('training_survey_type', '=', False)]}" + /> <field name="training_survey_type" attrs="{'invisible': [('training_survey_type', '=', False)]}" @@ -46,6 +59,38 @@ </field> </record> + <!-- Tree View --> + <record id="survey_user_input_training_tree" model="ir.ui.view"> + <field name="name">survey.user_input.training.list</field> + <field name="model">survey.user_input</field> + <field name="inherit_id" ref="survey.survey_user_input_view_tree" /> + <field name="priority">60</field> + <field name="arch" type="xml"> + <xpath expr="//field[@name='scoring_percentage']" position="after"> + <field + name="is_resent" + readonly="1" + optional="hide" + /> + <field + name="training_id" + attrs="{'invisible': [('training_survey_type', '=', False)]}" + optional="hide" + /> + <field + name="training_survey_type" + attrs="{'invisible': [('training_survey_type', '=', False)]}" + optional="hide" + /> + <field + name="student_id" + attrs="{'invisible': [('training_survey_type', '=', False)]}" + optional="hide" + /> + </xpath> + </field> + </record> + <!-- Kanban View --> <record id="survey_user_input_training_kanban" model="ir.ui.view"> <field name="name">survey.user_input.training.kanban</field>