Coverage for website/thaliawebsite/api/calendarjs/serializers.py: 94.59%

37 statements  

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

1# ruff: noqa: N815 

2from html import unescape 

3 

4from django.utils import timezone 

5from django.utils.html import strip_tags 

6 

7from rest_framework import serializers 

8 

9 

10class CalenderJSSerializer(serializers.ModelSerializer): 

11 """Serializer using the right format for CalendarJS.""" 

12 

13 class Meta: 

14 fields = ( 

15 "start", 

16 "end", 

17 "allDay", 

18 "isBirthday", 

19 "url", 

20 "title", 

21 "description", 

22 "classNames", 

23 "blank", 

24 "registration_info", 

25 ) 

26 

27 start = serializers.SerializerMethodField("_start") 

28 end = serializers.SerializerMethodField("_end") 

29 allDay = serializers.SerializerMethodField("_all_day") 

30 isBirthday = serializers.SerializerMethodField("_is_birthday") 

31 url = serializers.SerializerMethodField("_url") 

32 title = serializers.SerializerMethodField("_title") 

33 description = serializers.SerializerMethodField("_description") 

34 classNames = serializers.SerializerMethodField("_class_names") 

35 blank = serializers.SerializerMethodField("_target_blank") 

36 registration_info = serializers.SerializerMethodField("_registration_info") 

37 

38 def _start(self, instance): 

39 return timezone.localtime(instance.start) 

40 

41 def _end(self, instance): 

42 return timezone.localtime(instance.end) 

43 

44 def _all_day(self, instance): 

45 return False 

46 

47 def _is_birthday(self, instance): 

48 return False 

49 

50 def _url(self, instance): 

51 raise NotImplementedError 

52 

53 def _title(self, instance): 

54 return instance.title 

55 

56 def _description(self, instance): 

57 return unescape(strip_tags(instance.description)) 

58 

59 def _class_names(self, instance): 

60 pass 

61 

62 def _target_blank(self, instance): 

63 return False 

64 

65 def _registration_info(self, instance): 

66 return ""