Coverage for website/pushnotifications/api/v2/serializers.py: 90.48%

21 statements  

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

1from rest_framework.relations import ManyRelatedField, PrimaryKeyRelatedField 

2 

3from pushnotifications.models import Category, Device, Message 

4from thaliawebsite.api.v2.serializers.cleaned_model_serializer import ( 

5 CleanedModelSerializer, 

6) 

7 

8 

9class DeviceSerializer(CleanedModelSerializer): 

10 """Device serializer.""" 

11 

12 class Meta: 

13 """Meta for the serializer.""" 

14 

15 model = Device 

16 fields = ( 

17 "pk", 

18 "registration_id", 

19 "active", 

20 "date_created", 

21 "type", 

22 "receive_category", 

23 ) 

24 read_only_fields = ( 

25 "pk", 

26 "date_created", 

27 ) 

28 

29 extra_kwargs = {"active": {"default": True}} 

30 

31 def get_fields(self): 

32 f = super().get_fields() 

33 return f 

34 

35 receive_category = ManyRelatedField( 

36 allow_empty=True, 

37 required=False, 

38 child_relation=PrimaryKeyRelatedField( 

39 allow_empty=True, queryset=Category.objects.all(), required=False 

40 ), 

41 ) 

42 

43 

44class CategorySerializer(CleanedModelSerializer): 

45 """Category serializers.""" 

46 

47 class Meta: 

48 """Meta for the serializer.""" 

49 

50 model = Category 

51 fields = ("key", "name", "description") 

52 

53 

54class MessageSerializer(CleanedModelSerializer): 

55 class Meta: 

56 """Meta for the serializer.""" 

57 

58 model = Message 

59 fields = ("pk", "title", "body", "url", "category", "sent")