Coverage for website/pizzas/api/v2/admin/serializers/order.py: 76.92%
26 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from rest_framework import serializers
2from rest_framework.validators import UniqueTogetherValidator
4from members.api.v2.serializers.member import MemberSerializer
5from members.models import Member
6from payments.api.v2.serializers import PaymentSerializer
7from pizzas.models import FoodOrder, Product
8from thaliawebsite.api.v2.serializers.cleaned_model_serializer import (
9 CleanedModelSerializer,
10)
12from ..validators import MutuallyExclusiveValidator
13from .product import ProductAdminSerializer
16class FoodOrderAdminSerializer(CleanedModelSerializer):
17 class Meta:
18 model = FoodOrder
19 fields = ("pk", "payment", "product", "name", "member", "food_event")
20 validators = [
21 UniqueTogetherValidator(
22 queryset=FoodOrder.objects.all(),
23 fields=["food_event", "member"],
24 ),
25 MutuallyExclusiveValidator(
26 fields=["name", "member"],
27 ),
28 ]
29 read_only_fields = ("payment",)
31 payment = PaymentSerializer()
32 product = ProductAdminSerializer()
33 member = MemberSerializer(admin=True, detailed=False, required=False)
35 def to_internal_value(self, data):
36 self.fields["member"] = serializers.PrimaryKeyRelatedField(
37 queryset=Member.objects.all(), required=False, allow_null=True
38 )
39 self.fields["product"] = serializers.PrimaryKeyRelatedField(
40 queryset=Product.objects.all()
41 )
42 return super().to_internal_value(data)
44 def to_representation(self, instance):
45 self.fields["product"] = ProductAdminSerializer(read_only=True)
46 self.fields["member"] = MemberSerializer(
47 admin=True, detailed=False, read_only=True
48 )
49 return super().to_representation(instance)