Skip to content
Extraits de code Groupes Projets
Valider 1ffbf942 rédigé par jordan's avatar jordan
Parcourir les fichiers

[add] button "sauvegarder et quitter"

parent 4a26cb34
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -2,3 +2,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models
from . import controllers
# © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import main
# © 2020 Le Filament (<https://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
import json
from odoo import http, SUPERUSER_ID
from odoo.addons.survey.controllers.main import Survey
from odoo.http import request
_logger = logging.getLogger(__name__)
class WebsiteSurveyExtend(Survey):
# TODO - Si possible : trouver une manière d'hériter plutôt que réécrire
# AJAX submission of a page
@http.route(['/survey/submit/<model("survey.survey"):survey>'], type='http', methods=['POST'], auth='public', website=True)
def submit(self, survey, **post):
_logger.debug('Incoming data: %s', post)
page_id = int(post['page_id'])
questions = request.env['survey.question'].search([('page_id', '=', page_id)])
# Answer validation
errors = {}
for question in questions:
answer_tag = "%s_%s_%s" % (survey.id, page_id, question.id)
errors.update(question.validate_question(post, answer_tag))
ret = {}
if len(errors):
# Return errors messages to webpage
ret['errors'] = errors
else:
# Store answers into database
try:
user_input = request.env['survey.user_input'].sudo().search([('token', '=', post['token'])], limit=1)
except KeyError: # Invalid token
return request.render("survey.403", {'survey': survey})
user_id = request.env.user.id if user_input.type != 'link' else SUPERUSER_ID
for question in questions:
answer_tag = "%s_%s_%s" % (survey.id, page_id, question.id)
request.env['survey.user_input_line'].sudo(user=user_id).save_lines(user_input.id, question, post,
answer_tag)
save_quit = post['button_submit'] == 'save_quit'
go_back = post['button_submit'] == 'previous'
next_page, _, last = request.env['survey.survey'].next_page(user_input, page_id, go_back=go_back)
vals = {'last_displayed_page_id': page_id}
if next_page is None and not go_back:
vals.update({'state': 'done'})
else:
vals.update({'state': 'skip'})
user_input.sudo(user=user_id).write(vals)
ret['redirect'] = '/survey/fill/%s/%s' % (survey.id, post['token'])
if go_back:
ret['redirect'] += '/prev'
if save_quit:
ret['redirect'] = 'https://longtimelabel.com/'
return json.dumps(ret)
......@@ -160,7 +160,8 @@
</t>
<div class="text-right mt16 mb16 mr32">
<button t-if="survey.users_can_go_back and page_nr > 0" type="submit" class="btn ethikis-btn-green" name="button_submit" value="previous">Previous page</button>
<button t-if="not last" type="submit" class="btn ethikis-btn-blue" name="button_submit" value="next">Save or continue</button>
<button t-if="not last" type="submit" class="btn ethikis-btn-blue" name="button_submit" value="save_quit">Sauvegarder et quitter</button>
<button t-if="not last" type="submit" class="btn ethikis-btn-blue" name="button_submit" value="next">Page suivante</button>
<button t-if="last" type="submit" class="btn ethikis-btn-blue" name="button_submit" value="finish">Submit survey</button>
</div>
<div class="float-left">
......
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