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

1from django.core.exceptions import ObjectDoesNotExist 

2from rest_framework import serializers 

3 

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 

9 

10__all__ = ( 

11 'ImageAttachmentSerializer', 

12) 

13 

14 

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) 

23 

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') 

31 

32 def validate(self, data): 

33 

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 ) 

41 

42 # Enforce model validation 

43 super().validate(data) 

44 

45 return data