Coverage for website/pizzas/api/v2/serializers/food_event.py: 63.64%

22 statements  

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

1from rest_framework import serializers 

2 

3from events.api.v2.serializers.event import EventSerializer 

4from pizzas.api.v2.serializers.order import FoodOrderSerializer 

5from pizzas.models import FoodEvent, FoodOrder 

6from pizzas.services import can_change_order 

7 

8 

9class FoodEventSerializer(serializers.ModelSerializer): 

10 class Meta: 

11 model = FoodEvent 

12 fields = ( 

13 "pk", 

14 "start", 

15 "end", 

16 "event", 

17 "title", 

18 "can_manage", 

19 "order", 

20 ) 

21 

22 event = EventSerializer() 

23 can_manage = serializers.SerializerMethodField("_can_manage") 

24 order = serializers.SerializerMethodField("_member_order") 

25 

26 def _member_order(self, instance): 

27 try: 

28 order = instance.orders.get(member=self.context["request"].member) 

29 return FoodOrderSerializer( 

30 order, 

31 context=self.context, 

32 ).data 

33 except FoodOrder.DoesNotExist: 

34 pass 

35 return None 

36 

37 def _can_manage(self, instance): 

38 member = self.context["request"].member 

39 return can_change_order(member, instance)