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
« 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
9__all__ = (
10 'NotificationGroupSerializer',
11 'NotificationSerializer',
12 'SubscriptionSerializer',
13)
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)
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')
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 )
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')
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)
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')