Coverage for apis_core/relations/serializers.py: 0%

18 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2025-10-10 13:36 +0000

1from drf_spectacular.utils import extend_schema_field 

2from rest_framework.serializers import SerializerMethodField 

3 

4from apis_core.generic.serializers import ( 

5 GenericHyperlinkedModelSerializer, 

6 SimpleObjectSerializer, 

7 serializer_factory, 

8) 

9 

10 

11class RelationSerializer(GenericHyperlinkedModelSerializer): 

12 subj = SerializerMethodField() 

13 obj = SerializerMethodField() 

14 

15 class Meta: 

16 exclude = ( 

17 "subj_content_type", 

18 "subj_object_id", 

19 "obj_content_type", 

20 "obj_object_id", 

21 ) 

22 

23 @extend_schema_field(SimpleObjectSerializer()) 

24 def get_subj(self, obj): 

25 if obj.subj: 

26 serializer = serializer_factory(type(obj.subj), SimpleObjectSerializer) 

27 return serializer( 

28 obj.subj, context={"request": self.context["request"]} 

29 ).data 

30 

31 @extend_schema_field(SimpleObjectSerializer()) 

32 def get_obj(self, obj): 

33 if obj.obj: 

34 serializer = serializer_factory(type(obj.obj), SimpleObjectSerializer) 

35 return serializer( 

36 obj.obj, context={"request": self.context["request"]} 

37 ).data