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 @@

Login required

This survey is open only to registered people. Please - log in. + log in.