Add answers to REST API

This commit is contained in:
Raphael Michel
2017-07-02 16:34:55 +02:00
parent a530eda9fc
commit 0dc82b6a28
4 changed files with 45 additions and 4 deletions
+32
View File
@@ -76,6 +76,10 @@ checkins list of objects List of check-i
downloads list of objects List of ticket download options
├ output string Ticket output provider (e.g. ``pdf``, ``passbook``)
└ url string Download URL
answers list of objects Answers to user-defined questions
├ question integer Internal ID of the answered question
├ answer string Text representation of the answer
└ options list of integers Internal IDs of selected option(s)s (only for choice types)
===================================== ========================== =======================================================
@@ -152,6 +156,13 @@ Order endpoints
"datetime": "2017-12-25T12:45:23Z"
}
],
"answers": [
{
"question": 12,
"answer": "Foo",
"options": []
}
],
"downloads": [
{
"output": "pdf",
@@ -248,6 +259,13 @@ Order endpoints
"datetime": "2017-12-25T12:45:23Z"
}
],
"answers": [
{
"question": 12,
"answer": "Foo",
"options": []
}
],
"downloads": [
{
"output": "pdf",
@@ -359,6 +377,13 @@ Order position endpoints
"datetime": "2017-12-25T12:45:23Z"
}
],
"answers": [
{
"question": 12,
"answer": "Foo",
"options": []
}
],
"downloads": [
{
"output": "pdf",
@@ -428,6 +453,13 @@ Order position endpoints
"datetime": "2017-12-25T12:45:23Z"
}
],
"answers": [
{
"question": 12,
"answer": "Foo",
"options": []
}
],
"downloads": [
{
"output": "pdf",
+9 -1
View File
@@ -4,6 +4,7 @@ from rest_framework.reverse import reverse
from pretix.api.serializers.i18n import I18nAwareModelSerializer
from pretix.base.models import (
Checkin, Invoice, InvoiceAddress, InvoiceLine, Order, OrderPosition,
QuestionAnswer,
)
from pretix.base.signals import register_ticket_outputs
@@ -14,6 +15,12 @@ class InvoiceAdddressSerializer(I18nAwareModelSerializer):
fields = ('last_modified', 'company', 'name', 'street', 'zipcode', 'city', 'country', 'vat_id')
class AnswerSerializer(I18nAwareModelSerializer):
class Meta:
model = QuestionAnswer
fields = ('question', 'answer', 'options')
class CheckinSerializer(I18nAwareModelSerializer):
class Meta:
model = Checkin
@@ -72,13 +79,14 @@ class PositionDownloadsField(serializers.Field):
class OrderPositionSerializer(I18nAwareModelSerializer):
checkins = CheckinSerializer(many=True)
answers = AnswerSerializer(many=True)
downloads = PositionDownloadsField(source='*')
order = serializers.SlugRelatedField(slug_field='code', read_only=True)
class Meta:
model = OrderPosition
fields = ('id', 'order', 'positionid', 'item', 'variation', 'price', 'attendee_name', 'attendee_email',
'voucher', 'tax_rate', 'tax_value', 'secret', 'addon_to', 'checkins', 'downloads')
'voucher', 'tax_rate', 'tax_value', 'secret', 'addon_to', 'checkins', 'downloads', 'answers')
class OrderSerializer(I18nAwareModelSerializer):
+2 -2
View File
@@ -36,7 +36,7 @@ class OrderViewSet(viewsets.ReadOnlyModelViewSet):
def get_queryset(self):
return self.request.event.orders.prefetch_related(
'positions', 'positions__checkins', 'positions__item',
'positions', 'positions__checkins', 'positions__item', 'positions__answers', 'positions__answers__options'
).select_related(
'invoice_address'
)
@@ -98,7 +98,7 @@ class OrderPositionViewSet(viewsets.ReadOnlyModelViewSet):
def get_queryset(self):
return OrderPosition.objects.filter(order__event=self.request.event).prefetch_related(
'checkins',
'checkins', 'answers', 'answers__options'
).select_related(
'item', 'order', 'order__event', 'order__event__organizer'
)
+2 -1
View File
@@ -56,7 +56,8 @@ TEST_ORDERPOSITION_RES = {
"secret": "z3fsn8jyufm5kpk768q69gkbyr5f4h6w",
"addon_to": None,
"checkins": [],
"downloads": []
"downloads": [],
"answers": []
}
TEST_ORDER_RES = {
"code": "FOO",