summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2019-01-24 13:29:04 +0000
committerThibault Delavallée <tde@odoo.com>2019-01-25 13:12:32 +0000
commit82f5ec044b76eec2da7ff4e72beed9594921ae29 (patch)
tree5e409dcba84e520d94cc59f3a8f332b6bc70aa56
parente65bcb24fd559b59a8f0e4ee061f9367f339bbef (diff)
[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.
-rw-r--r--addons/survey/controllers/main.py12
-rw-r--r--addons/survey/views/survey_templates.xml2
2 files changed, 12 insertions, 2 deletions
diff --git a/addons/survey/controllers/main.py b/addons/survey/controllers/main.py
index 55d349b4098..186e33d6ed6 100644
--- a/addons/survey/controllers/main.py
+++ b/addons/survey/controllers/main.py
@@ -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})
diff --git a/addons/survey/views/survey_templates.xml b/addons/survey/views/survey_templates.xml
index db9f9c0480d..ea3e93a74cd 100644
--- a/addons/survey/views/survey_templates.xml
+++ b/addons/survey/views/survey_templates.xml
@@ -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>