|
|
@ -1,21 +1,12 @@ |
|
|
|
from rest_framework import serializers |
|
|
|
from rest_polymorphic.serializers import PolymorphicSerializer |
|
|
|
|
|
|
|
from .models import (Comment, Example, ExampleState, |
|
|
|
ImageClassificationProject, |
|
|
|
from .models import (ImageClassificationProject, |
|
|
|
IntentDetectionAndSlotFillingProject, Project, |
|
|
|
Seq2seqProject, SequenceLabelingProject, |
|
|
|
Speech2textProject, Tag, TextClassificationProject) |
|
|
|
|
|
|
|
|
|
|
|
class CommentSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Comment |
|
|
|
fields = ('id', 'user', 'username', 'example', 'text', 'created_at', ) |
|
|
|
read_only_fields = ('user', 'example') |
|
|
|
|
|
|
|
|
|
|
|
class TagSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
class Meta: |
|
|
@ -24,45 +15,6 @@ class TagSerializer(serializers.ModelSerializer): |
|
|
|
read_only_fields = ('id', 'project') |
|
|
|
|
|
|
|
|
|
|
|
class ExampleSerializer(serializers.ModelSerializer): |
|
|
|
annotation_approver = serializers.SerializerMethodField() |
|
|
|
is_confirmed = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
@classmethod |
|
|
|
def get_annotation_approver(cls, instance): |
|
|
|
approver = instance.annotations_approved_by |
|
|
|
return approver.username if approver else None |
|
|
|
|
|
|
|
def get_is_confirmed(self, instance): |
|
|
|
user = self.context.get('request').user |
|
|
|
if instance.project.collaborative_annotation: |
|
|
|
states = instance.states.all() |
|
|
|
else: |
|
|
|
states = instance.states.filter(confirmed_by_id=user.id) |
|
|
|
return states.count() > 0 |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Example |
|
|
|
fields = [ |
|
|
|
'id', |
|
|
|
'filename', |
|
|
|
'meta', |
|
|
|
'annotation_approver', |
|
|
|
'comment_count', |
|
|
|
'text', |
|
|
|
'is_confirmed' |
|
|
|
] |
|
|
|
read_only_fields = ['filename', 'is_confirmed'] |
|
|
|
|
|
|
|
|
|
|
|
class ExampleStateSerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = ExampleState |
|
|
|
fields = ('id', 'example', 'confirmed_by') |
|
|
|
read_only_fields = ('id', 'example', 'confirmed_by') |
|
|
|
|
|
|
|
|
|
|
|
class ProjectSerializer(serializers.ModelSerializer): |
|
|
|
tags = TagSerializer(many=True, required=False) |
|
|
|
|
|
|
|