from core.label_config import replace_task_data_undefined_with_config_field
|
from projects.models import Project
|
from rest_framework import serializers
|
from tasks.models import Annotation, Task
|
|
|
class OnlyIDWebhookSerializer(serializers.Serializer):
|
id = serializers.IntegerField()
|
|
class Meta:
|
fields: ('id',)
|
|
|
class ProjectWebhookSerializer(serializers.ModelSerializer):
|
|
task_number = serializers.IntegerField(read_only=True)
|
finished_task_number = serializers.IntegerField(read_only=True)
|
total_predictions_number = serializers.IntegerField(read_only=True)
|
total_annotations_number = serializers.IntegerField(read_only=True)
|
num_tasks_with_annotations = serializers.IntegerField(read_only=True)
|
useful_annotation_number = serializers.IntegerField(read_only=True)
|
ground_truth_number = serializers.IntegerField(read_only=True)
|
skipped_annotations_number = serializers.IntegerField(read_only=True)
|
|
def to_representation(self, instance):
|
instance = Project.objects.with_counts().filter(id=instance.id)[0]
|
return super().to_representation(instance)
|
|
class Meta:
|
model = Project
|
fields = '__all__'
|
|
|
class TaskWebhookSerializer(serializers.ModelSerializer):
|
# resolve $undefined$ key in task data, if any
|
def to_representation(self, task):
|
project = task.project
|
data = task.data
|
|
replace_task_data_undefined_with_config_field(data, project)
|
return super().to_representation(task)
|
|
class Meta:
|
model = Task
|
fields = '__all__'
|
|
|
class AnnotationWebhookSerializer(serializers.ModelSerializer):
|
class Meta:
|
model = Annotation
|
fields = '__all__'
|