From 12d2437f602648b9a0c5a606538a2fb1c196551c Mon Sep 17 00:00:00 2001 From: ml bonhomme <bonhomme@teklia.com> Date: Mon, 31 Jul 2023 13:00:44 +0000 Subject: [PATCH] Expose process creator in ListProcesses --- arkindex/process/api.py | 1 + arkindex/process/serializers/imports.py | 5 +++++ arkindex/process/tests/test_processes.py | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/arkindex/process/api.py b/arkindex/process/api.py index 461e1c2a37..d03bcd83b1 100644 --- a/arkindex/process/api.py +++ b/arkindex/process/api.py @@ -222,6 +222,7 @@ class ProcessList(ProcessACLMixin, ListAPIView): qs = ( self.readable_processes + .select_related('creator') .filter(filters) # Order processes by completion date when available, or start date, or last update .annotate(date_order=Coalesce('finished', 'started', 'updated')) diff --git a/arkindex/process/serializers/imports.py b/arkindex/process/serializers/imports.py index 8bdd1a9437..5f1abd0d6b 100644 --- a/arkindex/process/serializers/imports.py +++ b/arkindex/process/serializers/imports.py @@ -215,6 +215,11 @@ class ProcessDetailsSerializer(ProcessSerializer): class ProcessListSerializer(ProcessLightSerializer): + creator = serializers.CharField( + source='creator.display_name', + read_only=True, + help_text='Display name of the user who created the process.', + ) class Meta(ProcessLightSerializer.Meta): fields = ProcessLightSerializer.Meta.fields + ('created', 'updated', 'started', 'finished') diff --git a/arkindex/process/tests/test_processes.py b/arkindex/process/tests/test_processes.py index ba24f8828b..d4c8b255e6 100644 --- a/arkindex/process/tests/test_processes.py +++ b/arkindex/process/tests/test_processes.py @@ -122,6 +122,10 @@ class TestProcesses(FixtureAPITestCase): cls.import_worker_version = WorkerVersion.objects.get(worker__slug='file_import') + def setUp(self): + super().setUp() + self.maxDiff = None + def test_list_requires_login(self): with self.assertNumQueries(0): response = self.client.get(reverse('api:process-list')) @@ -159,6 +163,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.repository_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Process creator', 'updated': self.repository_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -171,6 +176,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.user_img_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.user_img_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -183,6 +189,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.elts_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Process creator', 'updated': self.elts_process.updated.isoformat().replace('+00:00', 'Z'), 'started': self.elts_process.started.isoformat().replace('+00:00', 'Z'), 'finished': None, @@ -195,6 +202,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.training_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.training_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -207,6 +215,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.workers_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.workers_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -244,6 +253,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'ready', 'created': self.user_img_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.user_img_process.updated.isoformat().replace('+00:00', 'Z'), 'started': self.user_img_process.started.isoformat().replace('+00:00', 'Z'), 'finished': None, @@ -277,6 +287,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.training_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.training_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -289,6 +300,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.user_img_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.user_img_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -301,6 +313,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.workers_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.workers_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -366,6 +379,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.local_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.local_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -406,6 +420,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.training_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.training_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -418,6 +433,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.user_img_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.user_img_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -430,6 +446,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.workers_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.workers_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -602,6 +619,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': unscheduled_with_tasks.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': unscheduled_with_tasks.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -627,6 +645,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.training_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.training_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -639,6 +658,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.elts_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Process creator', 'updated': self.elts_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -651,6 +671,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.repository_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Process creator', 'updated': self.repository_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -663,6 +684,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.user_img_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.user_img_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, @@ -675,6 +697,7 @@ class TestProcesses(FixtureAPITestCase): 'state': 'unscheduled', 'activity_state': 'disabled', 'created': self.workers_process.created.isoformat().replace('+00:00', 'Z'), + 'creator': 'Test user', 'updated': self.workers_process.updated.isoformat().replace('+00:00', 'Z'), 'started': None, 'finished': None, -- GitLab