-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathserializers.py
More file actions
80 lines (61 loc) · 2.39 KB
/
serializers.py
File metadata and controls
80 lines (61 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from pretix.api.serializers.i18n import I18nAwareModelSerializer
from pretix.api.serializers.item import ItemSerializer, QuestionSerializer
from pretix.api.serializers.order import PositionDownloadsField
from pretix.api.serializers.voucher import VoucherSerializer
from pretix.base.models import OrderPosition, QuestionAnswer
from rest_framework import serializers
class EventBodySerializer(serializers.Serializer):
organizer_slug = serializers.CharField(required=True)
event_slug = serializers.CharField(required=True)
class AttendeeHasTicketBodySerializer(serializers.Serializer):
attendee_email = serializers.EmailField(required=True)
events = EventBodySerializer(many=True, required=True)
class AttendeeTicketBodySerializer(serializers.Serializer):
attendee_email = serializers.EmailField(required=True)
class AnswerSerializer(I18nAwareModelSerializer):
question = QuestionSerializer()
class Meta:
model = QuestionAnswer
fields = ("question", "answer", "options")
class OrderPositionSerializer(I18nAwareModelSerializer):
answers = AnswerSerializer(many=True)
attendee_name = serializers.CharField(required=False)
downloads = PositionDownloadsField(source="*", read_only=True)
class Meta:
model = OrderPosition
fields = (
"addon_to",
"answers",
"attendee_email",
"attendee_name",
"attendee_name_parts",
"canceled",
"city",
"company",
"id",
"positionid",
"price",
"pseudonymization_id",
"secret",
"state",
"street",
"subevent",
"tax_rate",
"tax_rule",
"tax_value",
"variation",
"voucher",
"zipcode",
"downloads",
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["item"] = ItemSerializer(read_only=True, context=self.context)
class ExtendedVoucherSerializer(VoucherSerializer):
quota_items = serializers.SerializerMethodField()
def get_quota_items(self, instance):
if not instance.quota_id:
return None
return list(instance.quota.items.values_list("id", flat=True))
class Meta(VoucherSerializer.Meta):
fields = VoucherSerializer.Meta.fields + ("quota_items",)