Coverage for extras/api/serializers_/attachments.py: 76%
25 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 django.core.exceptions import ObjectDoesNotExist
2from rest_framework import serializers
4from core.models import ObjectType
5from extras.models import ImageAttachment
6from netbox.api.fields import ContentTypeField
7from netbox.api.gfk_fields import GFKSerializerField
8from netbox.api.serializers import ValidatedModelSerializer
10__all__ = (
11 'ImageAttachmentSerializer',
12)
15class ImageAttachmentSerializer(ValidatedModelSerializer):
16 object_type = ContentTypeField(
17 queryset=ObjectType.objects.all()
18 )
19 parent = GFKSerializerField(read_only=True)
20 image_width = serializers.IntegerField(read_only=True)
21 image_height = serializers.IntegerField(read_only=True)
22 image_size = serializers.IntegerField(read_only=True)
24 class Meta:
25 model = ImageAttachment
26 fields = [
27 'id', 'url', 'display', 'object_type', 'object_id', 'parent', 'name', 'image', 'description',
28 'image_height', 'image_width', 'image_size', 'created', 'last_updated',
29 ]
30 brief_fields = ('id', 'url', 'display', 'name', 'image', 'description')
32 def validate(self, data):
34 # Validate that the parent object exists
35 try:
36 data['object_type'].get_object_for_this_type(id=data['object_id'])
37 except ObjectDoesNotExist:
38 raise serializers.ValidationError(
39 "Invalid parent object: {} ID {}".format(data['object_type'], data['object_id'])
40 )
42 # Enforce model validation
43 super().validate(data)
45 return data