Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • arkindex/backend
1 result
Show changes
Commits on Source (2)
......@@ -1424,7 +1424,7 @@ class CorpusWorkersActivity(CorpusACLMixin, ListAPIView):
# Retrieve the distribution of activities on this corpus grouped by worker version
stats = WorkerActivity.objects \
.filter(element_id__in=corpus.elements.values('id')) \
.values('worker_version_id') \
.values('worker_version_id', 'configuration_id') \
.annotate(
**{
state.value: Count('id', filter=Q(state=state.value))
......@@ -1465,7 +1465,7 @@ class ProcessWorkersActivity(ProcessACLMixin, ListAPIView):
# Retrieve the distribution of activities on this process grouped by worker version
stats = WorkerActivity.objects \
.filter(process_id=process.id) \
.values('worker_version_id') \
.values('worker_version_id', 'configuration_id') \
.annotate(
**{
state.value: Count('id', filter=Q(state=state.value))
......
......@@ -178,22 +178,23 @@ class WorkerActivitySerializer(serializers.ModelSerializer):
)
class WorkerConfigurationSerializer(serializers.ModelSerializer):
class Meta:
model = WorkerConfiguration
fields = (
'id',
'name',
'configuration',
)
class WorkerStatisticsSerializer(serializers.Serializer):
"""
Serialize activity statistics of a worker version
"""
worker_version_id = serializers.UUIDField(read_only=True)
configuration_id = serializers.UUIDField(read_only=True, allow_null=True)
queued = serializers.IntegerField(read_only=True)
started = serializers.IntegerField(read_only=True)
processed = serializers.IntegerField(read_only=True)
error = serializers.IntegerField(read_only=True)
class WorkerConfigurationSerializer(serializers.ModelSerializer):
class Meta:
model = WorkerConfiguration
fields = (
'id',
'name',
'configuration',
)
......@@ -4,7 +4,14 @@ import uuid
from django.urls import reverse
from rest_framework import status
from arkindex.dataimport.models import DataImport, DataImportMode, WorkerActivity, WorkerActivityState, WorkerVersion
from arkindex.dataimport.models import (
DataImport,
DataImportMode,
WorkerActivity,
WorkerActivityState,
WorkerConfiguration,
WorkerVersion,
)
from arkindex.documents.models import Corpus
from arkindex.project.tests import FixtureAPITestCase
from arkindex.users.models import Role, User
......@@ -17,6 +24,7 @@ class TestWorkersActivity(FixtureAPITestCase):
super().setUpTestData()
cls.version_1 = WorkerVersion.objects.get(worker__slug='reco')
cls.version_2 = WorkerVersion.objects.get(worker__slug='dla')
cls.configuration_1 = WorkerConfiguration.objects.create(name='some_config', configuration={'aa': 'bb'}, worker=cls.version_1.worker)
cls.private_corpus = Corpus.objects.create(name='private', public=False)
cls.process = DataImport.objects.create(
mode=DataImportMode.Workers,
......@@ -31,6 +39,7 @@ class TestWorkersActivity(FixtureAPITestCase):
element_id=elt.id,
state=state,
worker_version_id=cls.version_1.id,
configuration_id=cls.configuration_1.id,
process_id=cls.process.id,
) for elt, state in zip(cls.corpus.elements.all(), itertools.cycle(WorkerActivityState))
), *(
......@@ -108,12 +117,14 @@ class TestWorkersActivity(FixtureAPITestCase):
self.assertCountEqual(response.json(), [
{
'worker_version_id': str(self.version_1.id),
'configuration_id': str(self.configuration_1.id),
'queued': self.queued,
'started': self.started,
'processed': self.processed,
'error': self.error,
}, {
'worker_version_id': str(self.version_2.id),
'configuration_id': None,
'queued': 0,
'started': 0,
'processed': self.corpus.elements.count(),
......@@ -158,6 +169,7 @@ class TestWorkersActivity(FixtureAPITestCase):
self.assertListEqual(response.json(), [
{
'worker_version_id': str(self.version_1.id),
'configuration_id': str(self.configuration_1.id),
'queued': self.queued,
'started': self.started,
'processed': self.processed,
......