Coverage for netbox/api/gfk_fields.py: 91%

18 statements  

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

1from drf_spectacular.utils import extend_schema_field 

2from rest_framework import serializers 

3 

4from utilities.api import get_serializer_for_model 

5 

6__all__ = ( 

7 'GFKSerializerField', 

8) 

9 

10 

11@extend_schema_field(serializers.JSONField(allow_null=True, read_only=True)) 

12class GFKSerializerField(serializers.Field): 

13 def __init__(self, **kwargs): 

14 super().__init__(**kwargs) 

15 self._serializer_cache = {} 

16 

17 def to_representation(self, instance, **kwargs): 

18 if instance is None: 18 ↛ 19line 18 didn't jump to line 19 because the condition on line 18 was never true

19 return None 

20 context = {'request': self.context['request']} 

21 if instance.__class__ not in self._serializer_cache: 

22 serializer = get_serializer_for_model(instance)(nested=True, context=context) 

23 self._serializer_cache[instance.__class__] = serializer 

24 else: 

25 serializer = self._serializer_cache[instance.__class__] 

26 return serializer.to_representation(instance)