Sélectionner une révision Git
survey.py NaN Gio
# Copyright 2024 Le Filament (<https://le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
from datetime import date
from odoo import http
from odoo.http import request
from odoo.addons.survey.controllers.main import Survey
_logger = logging.getLogger(__name__)
class TrainingSurvey(Survey):
# ------------------------------------------------------------
# Inherit parent
# ------------------------------------------------------------
@http.route(
"/survey/start/<string:survey_token>", type="http", auth="public", website=True
)
def survey_start(self, survey_token, answer_token=None, email=False, **post):
"""
Hérite la fonction parente pour relier la réponse à la formation si elle est
contenue dans l'URL
"""
page = super().survey_start(
survey_token=survey_token, answer_token=answer_token, email=email, **post
)
last_answer_token = answer_token or page.location.split("/")[-1]
answer_sudo = (
request.env["survey.user_input"]
.sudo()
.search([("access_token", "=", last_answer_token)])
)
survey_sudo = (
request.env["survey.survey"]
.sudo()
.search([("access_token", "=", survey_token)])
)
training_id = post.get("training_id")
if training_id:
training = request.env["training.training"].sudo().browse(int(training_id))
if training.date_limit and date.today() > training.date_limit:
return request.env["ir.qweb"]._render(
"training_survey.survey_closed",
{
"title": survey_sudo.title,
"training": training,
"website": training.website_id,
"main_object": training,
},
)
if (
training.nb_student_max > 0
and (
training.students_waiting_count + training.students_confirmed_count
)
>= training.nb_student_max
):
return request.env["ir.qweb"]._render(
"training_survey.survey_max_student",
{
"title": survey_sudo.title,
"training": training,
"website": training.website_id,
"main_object": training,
},
)
if training and training.registration_survey_id == survey_sudo:
answer_sudo.training_id = training
return page
# ------------------------------------------------------
# Inherit Business methods
# ------------------------------------------------------
def _prepare_question_html(self, survey_sudo, answer_sudo, **post):
"""
Annule la réponse en cours et renvoie vers la page de duplication de réponse si
l'option est activée
"""
response = super()._prepare_question_html(survey_sudo, answer_sudo, **post)
if survey_sudo.is_one_answer and answer_sudo.is_duplicate_answer:
request.env.cr.rollback()
answer_sudo.unlink()
response["survey_content"] = request.env["ir.qweb"]._render(
"training_survey.survey_duplicated_answer",
{"survey": survey_sudo, "title": survey_sudo.title},
)
_logger.error("Survey answer duplication not allowed")
return response