Skip to content

Commit

Permalink
Merge pull request #1770 from mkmark/1769
Browse files Browse the repository at this point in the history
show total progress if collaborative_annotation
  • Loading branch information
Hironsan authored Apr 8, 2022
2 parents 9e39f48 + bec56fe commit bde576d
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 2 deletions.
35 changes: 35 additions & 0 deletions backend/metrics/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,41 @@ def test_fetch_progress(self):
self.assertEqual(response.data, {"total": 1, "progress": expected_progress})


class TestProgressHelper(CRUDMixin):
collaborative_annotation = False

def setUp(self):
self.project = prepare_project(DOCUMENT_CLASSIFICATION, collaborative_annotation=self.collaborative_annotation)
self.example = make_doc(self.project.item)
mommy.make("ExampleState", example=self.example, confirmed_by=self.project.admin)
self.url = reverse(viewname="progress", args=[self.project.item.id])


class TestProgress(TestProgressHelper):
collaborative_annotation = False

def test_fetch_progress(self):
response = self.assert_fetch(self.project.admin, status.HTTP_200_OK)
expected = {"total": 1, "remaining": 0, "complete": 1}
self.assertEqual(response.data, expected)

def test_cannot_affect_others_progress(self):
for member in self.project.staffs:
response = self.assert_fetch(member, status.HTTP_200_OK)
expected = {"total": 1, "remaining": 1, "complete": 0}
self.assertEqual(response.data, expected)


class TestProgressOnCollaborativeAnnotation(TestProgressHelper):
collaborative_annotation = True

def test_fetch_progress(self):
for member in self.project.members:
response = self.assert_fetch(member, status.HTTP_200_OK)
expected = {"total": 1, "remaining": 0, "complete": 1}
self.assertEqual(response.data, expected)


class TestCategoryDistribution(CRUDMixin):
def setUp(self):
self.project = prepare_project(DOCUMENT_CLASSIFICATION)
Expand Down
9 changes: 7 additions & 2 deletions backend/metrics/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import abc

from django.shortcuts import get_object_or_404
from rest_framework import status
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
Expand All @@ -8,7 +9,7 @@
from examples.models import Example, ExampleState
from label_types.models import CategoryType, LabelType, RelationType, SpanType
from labels.models import Category, Label, Relation, Span
from projects.models import Member
from projects.models import Member, Project
from projects.permissions import IsProjectAdmin, IsProjectStaffAndReadOnly


Expand All @@ -18,7 +19,11 @@ class ProgressAPI(APIView):
def get(self, request, *args, **kwargs):
examples = Example.objects.filter(project=self.kwargs["project_id"]).values("id")
total = examples.count()
complete = ExampleState.objects.count_done(examples, user=self.request.user)
project = get_object_or_404(Project, pk=self.kwargs["project_id"])
if project.collaborative_annotation:
complete = ExampleState.objects.count_done(examples)
else:
complete = ExampleState.objects.count_done(examples, user=self.request.user)
data = {"total": total, "remaining": total - complete, "complete": complete}
return Response(data=data, status=status.HTTP_200_OK)

Expand Down

0 comments on commit bde576d

Please sign in to comment.