backend/model_garden/serializers/labeling_task.py (36 lines of code) (raw):
from rest_framework import serializers
from model_garden.models import Labeler, LabelingTask
class LabelingTaskCreateSerializer(serializers.Serializer):
task_name = serializers.CharField()
dataset_id = serializers.CharField()
assignee_id = serializers.IntegerField()
files_in_task = serializers.IntegerField()
count_of_tasks = serializers.IntegerField()
class LabelingTaskSerializer(serializers.ModelSerializer):
dataset = serializers.SerializerMethodField()
labeler = serializers.SerializerMethodField()
class Meta:
model = LabelingTask
fields = (
'id',
'dataset',
'labeler',
'name',
'status',
'url',
'error',
)
read_only_fields = fields
def get_dataset(self, obj: Labeler) -> str:
media_asset = obj.media_assets.first()
if media_asset is not None:
return media_asset.dataset.path
def get_labeler(self, obj: Labeler) -> str:
return obj.labeler.username
class LabelingTaskIDSerializer(serializers.Serializer):
id = serializers.ListField(
child=serializers.IntegerField(),
required=True,
allow_empty=False,
min_length=1,
)