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

1from rest_framework import serializers 

2from rest_framework.validators import UniqueTogetherValidator 

3 

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) 

11 

12from ..validators import MutuallyExclusiveValidator 

13from .product import ProductAdminSerializer 

14 

15 

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",) 

30 

31 payment = PaymentSerializer() 

32 product = ProductAdminSerializer() 

33 member = MemberSerializer(admin=True, detailed=False, required=False) 

34 

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) 

43 

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)