Skip to content

Commit f9be910

Browse files
authored
Merge pull request doccano#230 from vinayaugustine/per-user-filter
Feature/Filter the progress bar & document list by a user's own annotations
2 parents 427f59b + 72e5796 commit f9be910

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

app/server/api.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ def progress(self, project):
7979
docs = project.documents
8080
annotation_class = project.get_annotation_class()
8181
total = docs.count()
82-
done = annotation_class.objects.filter(document_id__in=docs.all()).\
82+
done = annotation_class.objects.filter(document_id__in=docs.all(),
83+
user_id=self.request.user).\
8384
aggregate(Count('document', distinct=True))['document__count']
8485
remaining = total - done
8586
return {'total': total, 'remaining': remaining}

app/server/filters.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.db.models import Count
1+
from django.db.models import Count, Q
22
from django_filters.rest_framework import FilterSet, BooleanFilter
33
from .models import Document
44

@@ -9,7 +9,9 @@ class DocumentFilter(FilterSet):
99
seq2seq_annotations__isnull = BooleanFilter(field_name='seq2seq_annotations', method='filter_annotations')
1010

1111
def filter_annotations(self, queryset, field_name, value):
12-
queryset = queryset.annotate(num_annotations=Count(field_name))
12+
queryset = queryset.annotate(num_annotations=
13+
Count(field_name, filter=
14+
Q(**{ f"{field_name}__user": self.request.user})))
1315

1416
should_have_annotations = not value
1517
if should_have_annotations:

app/server/tests/test_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1039,7 +1039,7 @@ def setUpTestData(cls):
10391039
main_project = mommy.make('server.TextClassificationProject', users=[super_user])
10401040
doc1 = mommy.make('server.Document', project=main_project)
10411041
doc2 = mommy.make('server.Document', project=main_project)
1042-
mommy.make('DocumentAnnotation', document=doc1)
1042+
mommy.make('DocumentAnnotation', document=doc1, user=super_user)
10431043
cls.url = reverse(viewname='statistics', args=[main_project.id])
10441044
cls.doc = Document.objects.filter(project=main_project)
10451045

0 commit comments

Comments
 (0)