From 54af9aa0e3ac59fcab663a81dc605c1336332acf Mon Sep 17 00:00:00 2001 From: ml bonhomme <bonhomme@teklia.com> Date: Fri, 5 Jul 2024 08:49:45 +0000 Subject: [PATCH] Remove worker_version from metadata APIs --- arkindex/documents/serializers/elements.py | 16 ---- arkindex/documents/tests/test_metadata.py | 100 +++++---------------- 2 files changed, 24 insertions(+), 92 deletions(-) diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py index f1de6db990..aa77a01419 100644 --- a/arkindex/documents/serializers/elements.py +++ b/arkindex/documents/serializers/elements.py @@ -92,12 +92,10 @@ class MetaDataSerializer(MetaDataLightSerializer): fields = MetaDataLightSerializer.Meta.fields + ( "entity_id", "entity", - "worker_version", "worker_run", ) read_only_fields = MetaDataLightSerializer.Meta.read_only_fields + ( "entity", - "worker_version", "worker_run", ) validators = [ @@ -126,19 +124,6 @@ class MetaDataSerializer(MetaDataLightSerializer): @extend_schema_serializer(deprecate_fields=("worker_version", )) class MetaDataCreateSerializer(MetaDataSerializer): - worker_version = serializers.UUIDField( - required=False, - allow_null=True, - source="worker_version_id", - validators=[ - ForbiddenValidator(), - ], - help_text=dedent(""" - ID of a WorkerVersion that created this MetaData. - - Creating new MetaData with a WorkerVersion is forbidden. Use `worker_run_id` instead. - """), - ) worker_run_id = WorkerRunIDField( required=False, write_only=True, @@ -189,7 +174,6 @@ class MetaDataBulkSerializer(serializers.Serializer): """ Allow editing several MetaData """ - worker_version = ForbiddenField() worker_run_id = WorkerRunIDField( help_text=dedent(""" A WorkerRun ID that the new metadata will refer to. diff --git a/arkindex/documents/tests/test_metadata.py b/arkindex/documents/tests/test_metadata.py index 063a876819..569a906247 100644 --- a/arkindex/documents/tests/test_metadata.py +++ b/arkindex/documents/tests/test_metadata.py @@ -1,4 +1,3 @@ -import uuid from unittest.mock import call, patch from django.contrib.auth.models import AnonymousUser @@ -67,7 +66,6 @@ class TestMetaData(FixtureAPITestCase): "value": "123", "dates": [], "entity": None, - "worker_version": None, "worker_run": None }, ]) @@ -106,7 +104,6 @@ class TestMetaData(FixtureAPITestCase): "type": "text", "value": "123", "entity": None, - "worker_version": None, "worker_run": None }, { @@ -128,31 +125,10 @@ class TestMetaData(FixtureAPITestCase): "worker_version_id": str(self.worker_version.id), "worker_run": None, }, - "worker_version": None, "worker_run": None, }, ]) - def test_list_with_worker_version(self): - self.metadata.worker_version = self.worker_version - self.metadata.save() - self.client.force_login(self.user) - with self.assertNumQueries(4): - response = self.client.get(reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)})) - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertListEqual(response.json(), [ - { - "dates": [], - "id": str(self.metadata.id), - "name": "folio", - "type": "text", - "value": "123", - "entity": None, - "worker_version": str(self.worker_version.id), - "worker_run": None - }, - ]) - def test_list_with_worker_run(self): self.metadata.worker_version = self.worker_version self.metadata.worker_run = self.worker_run @@ -171,7 +147,6 @@ class TestMetaData(FixtureAPITestCase): "value": "123", "entity": None, "dates": [], - "worker_version": str(self.worker_version.id), "worker_run": { "id": str(self.worker_run.id), "summary": "Worker Recognizer @ version 1", @@ -212,7 +187,6 @@ class TestMetaData(FixtureAPITestCase): "type": "text", "value": "1r", "worker_run": None, - "worker_version": None, }]) def test_list_with_parents(self): @@ -244,7 +218,6 @@ class TestMetaData(FixtureAPITestCase): "value": "123", "dates": [], "entity": None, - "worker_version": None, "worker_run": None, }, { @@ -254,7 +227,6 @@ class TestMetaData(FixtureAPITestCase): "type": "text", "value": "1r", "entity": None, - "worker_version": None, "worker_run": None, }, { @@ -265,7 +237,6 @@ class TestMetaData(FixtureAPITestCase): "type": "numeric", "value": 1337.0, "worker_run": None, - "worker_version": None, }, ], key=lambda x: metadata_ordering(x["id"]), @@ -319,9 +290,9 @@ class TestMetaData(FixtureAPITestCase): md = self.vol.metadatas.get(type=MetaType.Location, name="location") self.assertEqual(md.value, "Texas") - def test_create_metadata_worker_version(self): + def test_create_metadata_worker_version_ignored(self): self.client.force_login(self.user) - with self.assertNumQueries(3): + with self.assertNumQueries(7): response = self.client.post( reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}), data={ @@ -331,27 +302,17 @@ class TestMetaData(FixtureAPITestCase): "worker_version": str(self.worker_version.id), } ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual(response.json(), { - "worker_version": ["This field is forbidden."], - }) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) - def test_create_metadata_worker_run_or_version(self): - self.client.force_login(self.user) - with self.assertNumQueries(4): - response = self.client.post( - reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}), - data={ - "type": "location", - "name": "location", - "value": "Texas", - "worker_run_id": str(self.local_worker_run.id), - "worker_version": str(self.worker_version.id), - } - ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertDictEqual(response.json(), { - "worker_version": ["This field is forbidden."], + created_md = MetaData.objects.get(id=response.json()["id"]) + self.assertEqual(response.json(), { + "id": str(created_md.id), + "name": "location", + "type": "location", + "value": "Texas", + "entity": None, + "dates": [], + "worker_run": None }) def test_create_metadata_bad_worker_run(self): @@ -385,7 +346,6 @@ class TestMetaData(FixtureAPITestCase): "type": "exact", "year": 1885 }], - "worker_version": None, "worker_run": None }) @@ -538,7 +498,6 @@ class TestMetaData(FixtureAPITestCase): "value": "Texas", "entity": None, "dates": [], - "worker_version": str(self.local_worker_run.version.id), "worker_run": { "id": str(self.local_worker_run.id), "summary": "Worker Custom worker @ version 1", @@ -718,7 +677,6 @@ class TestMetaData(FixtureAPITestCase): "type": "date", "value": "2019-12-04", "entity": None, - "worker_version": None, "worker_run": None }) self.metadata.refresh_from_db() @@ -802,8 +760,6 @@ class TestMetaData(FixtureAPITestCase): # DRF should ignore the field silently self.assertEqual(response.status_code, status.HTTP_200_OK) - data = response.json() - self.assertIsNone(data["worker_version"]) self.metadata.refresh_from_db() self.assertIsNone(self.metadata.worker_version_id) self.assertEqual(self.metadata.name, "hello") @@ -829,7 +785,6 @@ class TestMetaData(FixtureAPITestCase): "type": "date", "value": "2019-12-04", "entity": None, - "worker_version": None, "worker_run": None }) self.metadata.refresh_from_db() @@ -855,7 +810,6 @@ class TestMetaData(FixtureAPITestCase): "type": "date", "value": "123", "entity": None, - "worker_version": None, "worker_run": None }) self.metadata.refresh_from_db() @@ -880,7 +834,6 @@ class TestMetaData(FixtureAPITestCase): "type": "text", "value": "2019-12-04", "entity": None, - "worker_version": None, "worker_run": None }) self.metadata.refresh_from_db() @@ -975,8 +928,6 @@ class TestMetaData(FixtureAPITestCase): # DRF should ignore the field silently self.assertEqual(response.status_code, status.HTTP_200_OK) - data = response.json() - self.assertIsNone(data["worker_version"]) self.metadata.refresh_from_db() self.assertIsNone(self.metadata.worker_version_id) @@ -1012,7 +963,6 @@ class TestMetaData(FixtureAPITestCase): "value": "123", "entity": None, "dates": [], - "worker_version": None, "worker_run": None } ) @@ -1038,7 +988,6 @@ class TestMetaData(FixtureAPITestCase): "value": 123.0, "entity": None, "dates": [], - "worker_version": None, "worker_run": None } ) @@ -1060,7 +1009,6 @@ class TestMetaData(FixtureAPITestCase): "value": "123", "entity": None, "dates": [], - "worker_version": str(self.worker_version.id), "worker_run": { "id": str(self.worker_run.id), "summary": "Worker Recognizer @ version 1", @@ -1072,7 +1020,8 @@ class TestMetaData(FixtureAPITestCase): entity = self.corpus.entities.create( name="Texas", type=self.location_type, - worker_version=self.worker_version, + worker_run=self.worker_run, + worker_version=self.worker_version ) response = self.client.post( reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}), @@ -1086,7 +1035,8 @@ class TestMetaData(FixtureAPITestCase): entity = self.corpus.entities.create( name="Texas", type=self.location_type, - worker_version=self.worker_version, + worker_run=self.worker_run, + worker_version=self.worker_version ) metadata = self.vol.metadatas.create(type=MetaType.Location, name="location", value="Texas") response = self.client.patch( @@ -1102,7 +1052,8 @@ class TestMetaData(FixtureAPITestCase): entity = self.corpus.entities.create( name="Texas", type=self.location_type, - worker_version=self.worker_version, + worker_run=self.worker_run, + worker_version=self.worker_version ) metadata = self.vol.metadatas.create(type=MetaType.Location, name="location", value="Texas", entity=entity) response = self.client.patch( @@ -1120,7 +1071,8 @@ class TestMetaData(FixtureAPITestCase): entity = self.private_corpus.entities.create( name="Texas", type=location_type, - worker_version=self.worker_version, + worker_run=self.worker_run, + worker_version=self.worker_version ) response = self.client.post( reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}), @@ -1134,7 +1086,8 @@ class TestMetaData(FixtureAPITestCase): entity = self.private_corpus.entities.create( name="Texas", type=location_type, - worker_version=self.worker_version, + worker_run=self.worker_run, + worker_version=self.worker_version ) metadata = self.vol.metadatas.create(type=MetaType.Location, name="location", value="Texas") response = self.client.patch( @@ -1159,7 +1112,6 @@ class TestMetaData(FixtureAPITestCase): "value": "# Title\n## Subtitle\nbla", "entity": None, "dates": [], - "worker_version": None, "worker_run": None } ) @@ -1178,7 +1130,6 @@ class TestMetaData(FixtureAPITestCase): "value": "<h1>Title</h1>", "entity": None, "dates": [], - "worker_version": None, "worker_run": None } ) @@ -1197,7 +1148,6 @@ class TestMetaData(FixtureAPITestCase): "value": '<style type="text/css">* { display: none !important; }</style>', "entity": None, "dates": [], - "worker_version": None, "worker_run": None } ) @@ -1407,13 +1357,12 @@ class TestMetaData(FixtureAPITestCase): data={"metadata_list": [ {"type": "text", "name": "language", "value": "Chinese"}, {"type": "text", "name": "alt_language", "value": "Mandarin"} - ], "worker_version": str(self.worker_version.id)}, + ]}, format="json" ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertDictEqual(response.json(), { - "worker_run_id": ["This field is required."], - "worker_version": ["This field is forbidden."], + "worker_run_id": ["This field is required."] }) def test_bulk_create_metadata_bad_worker_run(self): @@ -1538,7 +1487,6 @@ class TestMetaData(FixtureAPITestCase): "type": "text", "name": "language", "value": "Chinese", - "worker_version_id": str(uuid.uuid4()), "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", }, ], "worker_run_id": str(self.local_worker_run.id)}, -- GitLab