summaryrefslogtreecommitdiff
path: root/addons/survey/controllers/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/survey/controllers/main.py')
-rw-r--r--addons/survey/controllers/main.py53
1 files changed, 37 insertions, 16 deletions
diff --git a/addons/survey/controllers/main.py b/addons/survey/controllers/main.py
index 94ced8b83f8..7b9491d3ed2 100644
--- a/addons/survey/controllers/main.py
+++ b/addons/survey/controllers/main.py
@@ -15,6 +15,8 @@ from odoo.http import request, content_disposition
from odoo.osv import expression
from odoo.tools import format_datetime, format_date
+from odoo.addons.web.controllers.main import Binary
+
_logger = logging.getLogger(__name__)
@@ -283,6 +285,24 @@ class Survey(http.Controller):
return request.render('survey.survey_page_fill',
self._prepare_survey_data(access_data['survey_sudo'], access_data['answer_sudo'], **post))
+ @http.route('/survey/get_background_image/<string:survey_token>/<string:answer_token>', type='http', auth="public", website=True, sitemap=False)
+ def survey_get_background(self, survey_token, answer_token):
+ access_data = self._get_access_data(survey_token, answer_token, ensure_token=True)
+ if access_data['validity_code'] is not True:
+ return werkzeug.exceptions.Forbidden()
+
+ survey_sudo, answer_sudo = access_data['survey_sudo'], access_data['answer_sudo']
+
+ status, headers, image_base64 = request.env['ir.http'].sudo().binary_content(
+ model='survey.survey', id=survey_sudo.id, field='background_image',
+ default_mimetype='image/png')
+
+ return Binary._content_image_get_response(status, headers, image_base64)
+
+ # ----------------------------------------------------------------
+ # JSON ROUTES to begin / continue survey (ajax navigation) + Tools
+ # ----------------------------------------------------------------
+
@http.route('/survey/begin/<string:survey_token>/<string:answer_token>', type='json', auth='public', website=True)
def survey_begin(self, survey_token, answer_token, **post):
""" Route used to start the survey user input and display the first survey page. """
@@ -427,6 +447,7 @@ class Survey(http.Controller):
'review': review,
'survey': survey_sudo,
'answer': answer_sudo,
+ 'scoring_display_correction': survey_sudo.scoring_type == 'scoring_with_answers' and answer_sudo,
'format_datetime': lambda dt: format_datetime(request.env, dt, dt_format=False),
'format_date': lambda date: format_date(request.env, date)
})
@@ -464,23 +485,8 @@ class Survey(http.Controller):
return self._generate_report(succeeded_attempt, download=True)
- def _generate_report(self, user_input, download=True):
- report = request.env.ref('survey.certification_report').sudo().render_qweb_pdf([user_input.id], data={'report_type': 'pdf'})[0]
-
- report_content_disposition = content_disposition('Certification.pdf')
- if not download:
- content_split = report_content_disposition.split(';')
- content_split[0] = 'inline'
- report_content_disposition = ';'.join(content_split)
-
- return request.make_response(report, headers=[
- ('Content-Type', 'application/pdf'),
- ('Content-Length', len(report)),
- ('Content-Disposition', report_content_disposition),
- ])
-
# ------------------------------------------------------------
- # REPORTING SURVEY ROUTES
+ # REPORTING SURVEY ROUTES AND TOOLS
# ------------------------------------------------------------
@http.route('/survey/results/<model("survey.survey"):survey>', type='http', auth='user', website=True)
@@ -509,6 +515,21 @@ class Survey(http.Controller):
'search_finished': post.get('finished') == 'true',
})
+ def _generate_report(self, user_input, download=True):
+ report = request.env.ref('survey.certification_report').sudo().render_qweb_pdf([user_input.id], data={'report_type': 'pdf'})[0]
+
+ report_content_disposition = content_disposition('Certification.pdf')
+ if not download:
+ content_split = report_content_disposition.split(';')
+ content_split[0] = 'inline'
+ report_content_disposition = ';'.join(content_split)
+
+ return request.make_response(report, headers=[
+ ('Content-Type', 'application/pdf'),
+ ('Content-Length', len(report)),
+ ('Content-Disposition', report_content_disposition),
+ ])
+
def _extract_filters_data(self, survey, post):
search_filters = []
line_filter_domain, line_choices = [], []