Skip to content
Extraits de code Groupes Projets
Valider d54a3477 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[UPD] remove aeci button if no aeci & fix start survey controller

parent c7bd904a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -17,10 +17,13 @@ ...@@ -17,10 +17,13 @@
"data/mail_aeci.xml", "data/mail_aeci.xml",
"data/mail_end_training.xml", "data/mail_end_training.xml",
"data/mail_subscription.xml", "data/mail_subscription.xml",
"data/mail_training_confirmation.xml",
# templates # templates
"templates/survey_duplicated_answer.xml", "templates/survey_duplicated_answer.xml",
"templates/survey_template_management.xml", "templates/survey_template_management.xml",
# views # views
"views/res_company.xml",
"views/res_config_settings.xml",
"views/survey.xml", "views/survey.xml",
"views/survey_question.xml", "views/survey_question.xml",
"views/survey_user_input.xml", "views/survey_user_input.xml",
......
...@@ -25,18 +25,19 @@ class TrainingSurvey(Survey): ...@@ -25,18 +25,19 @@ class TrainingSurvey(Survey):
contenue dans l'URL contenue dans l'URL
""" """
page = super().survey_start( page = super().survey_start(
survey_token=survey_token, answer_token=None, email=False, **post survey_token=survey_token, answer_token=answer_token, email=email, **post
) )
last_answer_token = answer_token or page.location.split("/")[-1]
answer_sudo = ( answer_sudo = (
request.env["survey.user_input"] request.env["survey.user_input"]
.sudo() .sudo()
.search([("access_token", "=", page.location.split("/")[-1])]) .search([("access_token", "=", last_answer_token)])
) )
survey_sudo = ( survey_sudo = (
request.env["survey.survey"] request.env["survey.survey"]
.sudo() .sudo()
.search([("access_token", "=", page.location.split("/")[-2])]) .search([("access_token", "=", survey_token)])
) )
training_id = post.get("training_id") training_id = post.get("training_id")
...@@ -61,7 +62,7 @@ class TrainingSurvey(Survey): ...@@ -61,7 +62,7 @@ class TrainingSurvey(Survey):
request.env.cr.rollback() request.env.cr.rollback()
answer_sudo.unlink() answer_sudo.unlink()
response["survey_content"] = request.env["ir.qweb"]._render( response["survey_content"] = request.env["ir.qweb"]._render(
"cgscop_survey.survey_duplicated_answer", "training_survey.survey_duplicated_answer",
{"survey": survey_sudo, "title": survey_sudo.title}, {"survey": survey_sudo, "title": survey_sudo.title},
) )
_logger.error("Survey answer duplication not allowed") _logger.error("Survey answer duplication not allowed")
......
...@@ -58,7 +58,7 @@ class Survey(models.Model): ...@@ -58,7 +58,7 @@ class Survey(models.Model):
) )
# ------------------------------------------------------ # ------------------------------------------------------
# Override ORM # Constrains
# ------------------------------------------------------ # ------------------------------------------------------
# ------------------------------------------------------ # ------------------------------------------------------
...@@ -103,6 +103,19 @@ class Survey(models.Model): ...@@ -103,6 +103,19 @@ class Survey(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Override ORM # Override ORM
# ------------------------------------------------------ # ------------------------------------------------------
@api.model_create_multi
def create(self, vals_list):
survey_ids = super().create(vals_list)
for survey in survey_ids:
survey._check_survey_subscribe()
return survey_ids
def write(self, vals):
survey_ids = super().write(vals)
for survey in self:
survey._check_survey_subscribe()
return survey_ids
def unlink(self): def unlink(self):
for survey in self: for survey in self:
if survey.program_ids.filtered(lambda p: p.state == "confirmed"): if survey.program_ids.filtered(lambda p: p.state == "confirmed"):
...@@ -127,32 +140,34 @@ class Survey(models.Model): ...@@ -127,32 +140,34 @@ class Survey(models.Model):
# Business function # Business function
# ------------------------------------------------------ # ------------------------------------------------------
def _create_training_survey(self, training_survey_type): def _create_training_survey(self, training_survey_type):
survey_id = self.create( survey_values = {
{
"title": "Questionnaire", "title": "Questionnaire",
"survey_type": "training", "survey_type": "training",
"training_survey_type": training_survey_type, "training_survey_type": training_survey_type,
"is_one_answer": True, "is_one_answer": True,
"question_and_page_ids": self.env[
"survey.question"
]._get_subscribe_question_values(),
} }
) survey_id = self.create(survey_values)
survey_id._create_email_question()
survey_id._create_firstname_question()
survey_id._create_lastname_question()
survey_id._create_company_question()
return survey_id return survey_id
def _create_email_question(self): def _check_survey_subscribe(self):
self.ensure_one()
self.question_ids._create_email_question(self.id)
def _create_firstname_question(self):
self.ensure_one() self.ensure_one()
self.question_ids._create_firstname_question(self.id) if self.survey_type == "training" and self.training_survey_type == "subscribe":
if (
def _create_lastname_question(self): not any(self.question_ids.mapped("save_as_email"))
self.ensure_one() or not any(self.question_ids.mapped("save_as_nickname"))
self.question_ids._create_lastname_question(self.id) or not any(self.question_ids.mapped("save_as_firstname"))
):
def _create_company_question(self): raise UserError(
self.ensure_one() _(
self.question_ids._create_company_question(self.id) "Pour les questionnaires d'inscription aux formations, "
"il est nécessaire"
"de configurer :\n"
" - une question de type email\n"
" - une question de type prénom\n"
" - une question de type surnom\n"
"Ces questions permettront de valider l'inscription du participant."
)
)
...@@ -25,6 +25,7 @@ class TrainingStudent(models.Model): ...@@ -25,6 +25,7 @@ class TrainingStudent(models.Model):
store=False, store=False,
) )
survey_count = fields.Integer(compute="_compute_survey_count") survey_count = fields.Integer(compute="_compute_survey_count")
is_aeci = fields.Boolean(compute="_compute_is_aeci")
aeci_sent = fields.Boolean(compute="_compute_aeci_sent") aeci_sent = fields.Boolean(compute="_compute_aeci_sent")
# ------------------------------------------------------ # ------------------------------------------------------
...@@ -48,6 +49,10 @@ class TrainingStudent(models.Model): ...@@ -48,6 +49,10 @@ class TrainingStudent(models.Model):
) )
student.aeci_sent = True if aeci else False student.aeci_sent = True if aeci else False
def _compute_is_aeci(self):
for student in self:
student.is_aeci = True if student.training_id.aeci_survey_id else False
# ------------------------------------------------------ # ------------------------------------------------------
# Action buttons # Action buttons
# ------------------------------------------------------ # ------------------------------------------------------
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
type="object" type="object"
class="btn-outline-primary" class="btn-outline-primary"
string="Créer un nouveau questionnaire AECI" string="Créer un nouveau questionnaire AECI"
attrs="{'invisible': [('registration_survey_id', '!=', False)]}" attrs="{'invisible': [('aeci_survey_id', '!=', False)]}"
/> />
</p> </p>
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
type="object" type="object"
class="btn-outline-primary" class="btn-outline-primary"
string="Créer un nouveau questionnaire AECT" string="Créer un nouveau questionnaire AECT"
attrs="{'invisible': [('registration_survey_id', '!=', False)]}" attrs="{'invisible': [('aect_survey_id', '!=', False)]}"
/> />
</p> </p>
</page> </page>
......
...@@ -26,12 +26,13 @@ ...@@ -26,12 +26,13 @@
<notebook> <notebook>
<page name="survey" string="Questionnaires"> <page name="survey" string="Questionnaires">
<field name="aeci_sent" invisible="1" /> <field name="aeci_sent" invisible="1" />
<field name="is_aeci" invisible="1" />
<button <button
name="action_create_aeci" name="action_create_aeci"
type="object" type="object"
string="Envoyer AECI" string="Envoyer AECI"
class="btn-primary mb-4" class="btn-primary mb-4"
attrs="{'invisible': ['|', ('aeci_sent', '=', True), ('state', '!=', 'confirmed')]}" attrs="{'invisible': ['|', '|', ('is_aeci', '=', False), ('aeci_sent', '=', True), ('state', '!=', 'confirmed')]}"
/> />
<field name="student_survey_ids" readonly="1"> <field name="student_survey_ids" readonly="1">
<tree> <tree>
...@@ -71,20 +72,15 @@ ...@@ -71,20 +72,15 @@
decoration-info="registration_state == 'in_progress'" decoration-info="registration_state == 'in_progress'"
/> />
<field name="aeci_sent" invisible="1" /> <field name="aeci_sent" invisible="1" />
<field name="is_aeci" invisible="1" />
<button <button
name="action_create_aeci" name="action_create_aeci"
type="object" type="object"
string="Envoyer AECI" string="Envoyer AECI"
class="btn-outline-primary" class="btn-outline-primary"
attrs="{'invisible': ['|', ('aeci_sent', '=', True), ('state', '!=', 'confirmed')]}" attrs="{'invisible': ['|', '|', ('is_aeci', '=', False), ('aeci_sent', '=', True), ('state', '!=', 'confirmed')]}"
/> />
</xpath> </xpath>
<!-- <xpath expr="//button[@name='action_confirmed']" position="attributes">-->
<!-- <attribute name="attrs">{'invisible': ['|', ('state', '=', 'confirmed'), ('registration_state', '!=', 'done')]}</attribute>-->
<!-- </xpath>-->
<!-- <xpath expr="//button[@name='action_unsuitable']" position="attributes">-->
<!-- <attribute name="attrs">{'invisible': ['|', ('state', '=', 'unsuitable'), ('registration_state', '!=', 'done')]}</attribute>-->
<!-- </xpath>-->
</field> </field>
</record> </record>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter