Coverage for website/pizzas/api/v2/serializers/order.py: 100.00%

26 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from rest_framework import fields, serializers 

2from rest_framework.validators import UniqueTogetherValidator 

3 

4from members.api.v2.serializers.member import MemberSerializer 

5from payments.api.v2.serializers import PaymentSerializer 

6from pizzas.api.v2.serializers.product import ProductSerializer 

7from pizzas.models import FoodEvent, FoodOrder 

8from thaliawebsite.api.v2.fields import ( 

9 CurrentMemberDefault, 

10 CurrentRequestObjectDefault, 

11) 

12 

13 

14class FoodOrderSerializer(serializers.ModelSerializer): 

15 class Meta: 

16 model = FoodOrder 

17 fields = ("pk", "payment", "product", "name", "member") 

18 read_only_fields = ("pk", "payment", "name", "member") 

19 

20 product = ProductSerializer() 

21 payment = PaymentSerializer() 

22 member = MemberSerializer(detailed=False) 

23 

24 

25class FoodOrderCreateSerializer(serializers.ModelSerializer): 

26 class Meta: 

27 model = FoodOrder 

28 fields = ("product", "member", "food_event") 

29 validators = [ 

30 UniqueTogetherValidator( 

31 queryset=FoodOrder.objects.all(), 

32 fields=["food_event", "member"], 

33 ) 

34 ] 

35 

36 food_event = fields.HiddenField( 

37 default=CurrentRequestObjectDefault(FoodEvent, url_field="pk") 

38 ) 

39 member = fields.HiddenField(default=CurrentMemberDefault()) 

40 

41 

42class FoodOrderUpdateSerializer(serializers.ModelSerializer): 

43 class Meta: 

44 model = FoodOrder 

45 fields = ("product",)