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
« 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
4from utilities.api import get_serializer_for_model
6__all__ = (
7 'GFKSerializerField',
8)
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 = {}
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)