Skip to content
Snippets Groups Projects
Commit 5986ba40 authored by Tomasz Knapik's avatar Tomasz Knapik Committed by Todd Dembrey
Browse files

Implement API outputting questions

parent feac8b12
No related branches found
No related tags found
No related merge requests found
...@@ -152,7 +152,6 @@ class AccessFormData: ...@@ -152,7 +152,6 @@ class AccessFormData:
for field_id in self.question_field_ids for field_id in self.question_field_ids
if field_id not in self.named_blocks if field_id not in self.named_blocks
] ]
def output_answers(self): def output_answers(self):
# Returns a safe string of the rendered answers # Returns a safe string of the rendered answers
return mark_safe(''.join(self.render_answers())) return mark_safe(''.join(self.render_answers()))
import collections
from rest_framework import serializers from rest_framework import serializers
from .models import ApplicationSubmission from .models import ApplicationSubmission
...@@ -10,6 +12,37 @@ class SubmissionListSerializer(serializers.ModelSerializer): ...@@ -10,6 +12,37 @@ class SubmissionListSerializer(serializers.ModelSerializer):
class SubmissionDetailSerializer(serializers.ModelSerializer): class SubmissionDetailSerializer(serializers.ModelSerializer):
questions = serializers.SerializerMethodField()
meta_questions = serializers.SerializerMethodField()
class Meta: class Meta:
model = ApplicationSubmission model = ApplicationSubmission
fields = ('id', 'title',) fields = ('id', 'title', 'questions', 'meta_questions')
def get_all_questions(self, obj, filter_func=None):
questions = collections.OrderedDict()
for field_id in obj.question_field_ids:
if filter_func is not None:
if filter_func(field_id):
continue
field = obj.field(field_id)
# TODO: Check field to see if answer can be serialized
data = obj.data(field_id)
questions[field_id] = {
'question': field.value['field_label'],
'answer': data,
}
return questions
def get_meta_questions(self, obj):
return self.get_all_questions(
obj,
filter_func=lambda field_id: field_id not in obj.named_blocks
)
def get_questions(self, obj):
return self.get_all_questions(
obj,
filter_func=lambda field_id: field_id in obj.named_blocks
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment