MCPcopy Create free account
hub / github.com/HumanSignal/label-studio / AnnotationSerializer

Class AnnotationSerializer

label_studio/data_export/serializers.py:27–62  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25
26
27class AnnotationSerializer(FlexFieldsModelSerializer):
28 completed_by = serializers.PrimaryKeyRelatedField(read_only=True)
29 result = serializers.SerializerMethodField()
30 state = FSMStateField(read_only=True) # FSM state for annotations
31
32 class Meta:
33 model = Annotation
34 fields = '__all__'
35 expandable_fields = {'completed_by': (CompletedBySerializer,)}
36
37 def to_representation(self, instance):
38 """Override to conditionally exclude FSM state field when feature flags are disabled."""
39 from core.current_request import CurrentContext
40 from core.feature_flags import flag_set
41
42 ret = super().to_representation(instance)
43
44 # Remove state field from output if either feature flag is disabled
45 user = CurrentContext.get_user()
46 if not (
47 flag_set('fflag_feat_fit_568_finite_state_management', user=user)
48 and flag_set('fflag_feat_fit_710_fsm_state_fields', user=user)
49 ):
50 ret.pop('state', None)
51
52 return ret
53
54 def get_result(self, obj):
55 # run frames extraction on param, result and result type
56 if (
57 obj.result
58 and self.context.get('interpolate_key_frames', False)
59 and is_video_object_tracking(parsed_config=obj.project.get_parsed_config())
60 ):
61 return extract_key_frames(obj.result)
62 return obj.result
63
64
65class BaseExportDataSerializer(FlexFieldsModelSerializer):

Callers 2

ImportApiSerializerClass · 0.90

Calls 1

FSMStateFieldClass · 0.90

Tested by

no test coverage detected