From dff79150aada9a3f2af1421ab2725d7a12253ca1 Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Fri, 7 Feb 2025 14:17:47 +0100 Subject: [PATCH] [ADD] student creation button from subscription answer --- models/survey_user_input.py | 16 +++++++++++++ views/survey_user_input.xml | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/models/survey_user_input.py b/models/survey_user_input.py index 14df35d..20b76fc 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 4c4421b..28b1d06 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> -- GitLab