Browse Source

Fix progress bar so that it shows number of labelled documents for seq2seq and added field to allow for seq2seq export.

pull/287/head
Federica Nocera 5 years ago
parent
commit
6455754bfa
3 changed files with 12 additions and 5 deletions
  1. 2
      app/api/serializers.py
  2. 2
      app/api/utils.py
  3. 13
      app/api/views.py

2
app/api/serializers.py

@ -160,5 +160,5 @@ class Seq2seqAnnotationSerializer(serializers.ModelSerializer):
class Meta:
model = Seq2seqAnnotation
fields = ('id', 'text', 'user', 'document')
fields = ('id', 'text', 'user', 'document', 'prob')
read_only_fields = ('user',)

2
app/api/utils.py

@ -373,6 +373,7 @@ class JSONLRenderer(JSONRenderer):
ensure_ascii=self.ensure_ascii,
allow_nan=not self.strict) + '\n'
class JSONPainter(object):
def paint(self, documents):
@ -406,6 +407,7 @@ class JSONPainter(object):
data.append(d)
return data
class CSVPainter(JSONPainter):
def paint(self, documents):

13
app/api/views.py

@ -15,7 +15,7 @@ from rest_framework.parsers import MultiPartParser
from rest_framework_csv.renderers import CSVRenderer
from .filters import DocumentFilter
from .models import Project, Label, Document
from .models import Project, Label, Document, Seq2seqAnnotation
from .permissions import IsAdminUserAndWriteOnly, IsProjectUser, IsOwnAnnotation
from .serializers import ProjectSerializer, LabelSerializer, DocumentSerializer, UserSerializer
from .serializers import ProjectPolymorphicSerializer
@ -90,9 +90,14 @@ class StatisticsAPI(APIView):
annotation_class = project.get_annotation_class()
docs = project.documents.all()
annotations = annotation_class.objects.filter(document_id__in=docs.all())
for d in annotations.values('label__text', 'user__username').annotate(Count('label'), Count('user')):
label_count[d['label__text']] += d['label__count']
user_count[d['user__username']] += d['user__count']
if annotation_class == Seq2seqAnnotation:
for d in annotations.values('text', 'user__username').annotate(Count('text'), Count('user')):
label_count[d['text']] += d['text__count']
user_count[d['user__username']] += d['user__count']
else:
for d in annotations.values('label__text', 'user__username').annotate(Count('label'), Count('user')):
label_count[d['label__text']] += d['label__count']
user_count[d['user__username']] += d['user__count']
return label_count, user_count

Loading…
Cancel
Save