mirror of https://github.com/doccano/doccano.git
pythondatasetsactive-learningtext-annotationdatasetnatural-language-processingdata-labelingmachine-learningannotation-tool
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
from rest_framework import serializers
|
|
|
|
from .models import Example, ExampleState, Comment
|
|
|
|
|
|
class CommentSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = Comment
|
|
fields = ('id', 'user', 'username', 'example', 'text', 'created_at', )
|
|
read_only_fields = ('user', 'example')
|
|
|
|
|
|
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')
|