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

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):

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'
)