Coverage for extras/api/serializers_/notifications.py: 100%

31 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1from core.models import ObjectType 

2from extras.models import Notification, NotificationGroup, Subscription 

3from netbox.api.fields import ContentTypeField, SerializedPKRelatedField 

4from netbox.api.gfk_fields import GFKSerializerField 

5from netbox.api.serializers import ChangeLogMessageSerializer, ValidatedModelSerializer 

6from users.api.serializers_.users import GroupSerializer, UserSerializer 

7from users.models import Group, User 

8 

9__all__ = ( 

10 'NotificationGroupSerializer', 

11 'NotificationSerializer', 

12 'SubscriptionSerializer', 

13) 

14 

15 

16class NotificationSerializer(ValidatedModelSerializer): 

17 object_type = ContentTypeField( 

18 queryset=ObjectType.objects.with_feature('notifications'), 

19 ) 

20 object = GFKSerializerField(read_only=True) 

21 user = UserSerializer(nested=True) 

22 

23 class Meta: 

24 model = Notification 

25 fields = [ 

26 'id', 'url', 'display', 'object_type', 'object_id', 'object', 'user', 'created', 'read', 'event_type', 

27 ] 

28 brief_fields = ('id', 'url', 'display', 'object_type', 'object_id', 'user', 'read', 'event_type') 

29 

30 

31class NotificationGroupSerializer(ChangeLogMessageSerializer, ValidatedModelSerializer): 

32 groups = SerializedPKRelatedField( 

33 queryset=Group.objects.all(), 

34 serializer=GroupSerializer, 

35 nested=True, 

36 required=False, 

37 many=True 

38 ) 

39 users = SerializedPKRelatedField( 

40 queryset=User.objects.all(), 

41 serializer=UserSerializer, 

42 nested=True, 

43 required=False, 

44 many=True 

45 ) 

46 

47 class Meta: 

48 model = NotificationGroup 

49 fields = [ 

50 'id', 'url', 'display', 'display_url', 'name', 'description', 'groups', 'users', 

51 ] 

52 brief_fields = ('id', 'url', 'display', 'name', 'description') 

53 

54 

55class SubscriptionSerializer(ValidatedModelSerializer): 

56 object_type = ContentTypeField( 

57 queryset=ObjectType.objects.with_feature('notifications'), 

58 ) 

59 object = GFKSerializerField(read_only=True) 

60 user = UserSerializer(nested=True) 

61 

62 class Meta: 

63 model = Subscription 

64 fields = [ 

65 'id', 'url', 'display', 'object_type', 'object_id', 'object', 'user', 'created', 

66 ] 

67 brief_fields = ('id', 'url', 'display', 'object_type', 'object_id', 'user')