diff --git a/addons/survey/controllers/main.py b/addons/survey/controllers/main.py
index bd08fecf6d1..4287bbcf655 100644
--- a/addons/survey/controllers/main.py
+++ b/addons/survey/controllers/main.py
@@ -394,9 +394,10 @@ class WebsiteSurvey(http.Controller):
result = []
if question.type == 'multiple_choice':
result.append({'key': str(question.question),
- 'values': survey_obj.prepare_result(request.cr, request.uid, question, current_filters, context=request.context)})
+ 'values': survey_obj.prepare_result(request.cr, request.uid, question, current_filters, context=request.context)['answers']
+ })
if question.type == 'simple_choice':
- result = survey_obj.prepare_result(request.cr, request.uid, question, current_filters, context=request.context)
+ result = survey_obj.prepare_result(request.cr, request.uid, question, current_filters, context=request.context)['answers']
if question.type == 'matrix':
data = survey_obj.prepare_result(request.cr, request.uid, question, current_filters, context=request.context)
for answer in data['answers']:
diff --git a/addons/survey/survey.py b/addons/survey/survey.py
index e5e1149a7d7..f110afae352 100644
--- a/addons/survey/survey.py
+++ b/addons/survey/survey.py
@@ -345,16 +345,20 @@ class survey_survey(osv.Model):
context = {}
#Calculate and return statistics for choice
if question.type in ['simple_choice', 'multiple_choice']:
- result_summary = {}
- [result_summary.update({label.id: {'text': label.value, 'count': 0, 'answer_id': label.id}}) for label in question.labels_ids]
+ answers = {}
+ comments = []
+ [answers.update({label.id: {'text': label.value, 'count': 0, 'answer_id': label.id}}) for label in question.labels_ids]
for input_line in question.user_input_line_ids:
- if input_line.answer_type == 'suggestion' and result_summary.get(input_line.value_suggested.id) and (not(current_filters) or input_line.user_input_id.id in current_filters):
- result_summary[input_line.value_suggested.id]['count'] += 1
- result_summary = result_summary.values()
+ if input_line.answer_type == 'suggestion' and answers.get(input_line.value_suggested.id) and (not(current_filters) or input_line.user_input_id.id in current_filters):
+ answers[input_line.value_suggested.id]['count'] += 1
+ if input_line.answer_type == 'text' and (not(current_filters) or input_line.user_input_id.id in current_filters):
+ comments.append(input_line)
+ result_summary = {'answers': answers.values(), 'comments': comments}
#Calculate and return statistics for matrix
if question.type == 'matrix':
rows, answers, res = {}, {}, {}
+ comments = []
[rows.update({label.id: label.value}) for label in question.labels_ids_2]
[answers.update({label.id: label.value}) for label in question.labels_ids]
for cell in product(rows.keys(), answers.keys()):
@@ -362,7 +366,9 @@ class survey_survey(osv.Model):
for input_line in question.user_input_line_ids:
if input_line.answer_type == 'suggestion' and (not(current_filters) or input_line.user_input_id.id in current_filters):
res[(input_line.value_suggested_row.id, input_line.value_suggested.id)] += 1
- result_summary = {'answers': answers, 'rows': rows, 'result': res}
+ if input_line.answer_type == 'text' and (not(current_filters) or input_line.user_input_id.id in current_filters):
+ comments.append(input_line)
+ result_summary = {'answers': answers, 'rows': rows, 'result': res, 'comments': comments}
#Calculate and return statistics for free_text, textbox, datetime
if question.type in ['free_text', 'textbox', 'datetime']:
diff --git a/addons/survey/views/survey_result.xml b/addons/survey/views/survey_result.xml
index 7763321129f..c1303b87b0f 100644
--- a/addons/survey/views/survey_result.xml
+++ b/addons/survey/views/survey_result.xml
@@ -115,6 +115,28 @@
+
+
+
+
@@ -154,7 +176,7 @@
-
+
|
@@ -168,6 +190,14 @@
+
+
+
+
+
+
+
+
@@ -217,6 +247,13 @@
+
+
+
+
+
+
+