[IMP] survey: better manage login required and signup

Purpose of this commit is to provide a real signup URL and redirection when
login is required on survey. It depends correctly on current partner state
and auth signup parameters. Redirection is now correctly managed so that
customer will be back on survey with their token.

This commit is linked to task ID 1932508 and PR #30508.
This commit is contained in:
Thibault Delavallée
2019-01-25 13:12:32 +00:00
parent e65bcb24fd
commit 82f5ec044b
2 changed files with 12 additions and 2 deletions
+11 -1
View File
@@ -4,7 +4,9 @@
import json
import logging
import werkzeug
from datetime import datetime
from dateutil.relativedelta import relativedelta
from math import ceil
from odoo import fields, http
@@ -121,7 +123,15 @@ class Survey(http.Controller):
elif error_key == 'survey_closed' and access_data['can_answer']:
return request.render("survey.survey_expired", {'survey': survey_sudo})
elif error_key == 'survey_auth' and answer_sudo.token:
return request.render("survey.auth_required", {'survey': survey_sudo, 'token': answer_sudo.token})
if answer_sudo.partner_id and (answer_sudo.partner_id.user_ids or survey_sudo.users_can_signup):
if answer_sudo.partner_id.user_ids:
answer_sudo.partner_id.signup_cancel()
else:
answer_sudo.partner_id.signup_prepare(expiration=fields.Datetime.now() + relativedelta(days=1))
redirect_url = answer_sudo.partner_id._get_signup_url_for_action(url='/survey/start/%s?answer_token=%s' % (survey_sudo.access_token, answer_sudo.token))[answer_sudo.partner_id.id]
else:
redirect_url = '/web/login?redirect=%s' % ('/survey/start/%s?answer_token=%s' % (survey_sudo.access_token, answer_sudo.token))
return request.render("survey.auth_required", {'survey': survey_sudo, 'redirect_url': redirect_url})
elif error_key == 'answer_deadline' and answer_sudo.token:
return request.render("survey.survey_expired", {'survey': survey_sudo})
+1 -1
View File
@@ -58,7 +58,7 @@
<div class="jumbotron mt32">
<h1>Login required</h1>
<p>This survey is open only to registered people. Please
<a t-att-href="'/web/login?redirect=%s' % ('/survey/start/%s?answer_token=%s' % (survey.access_token, answer_token))">log in</a>.
<a t-att-href="redirect_url">log in</a>.
</p>
</div>
</div>