diff --git a/arkindex/documents/api/ml.py b/arkindex/documents/api/ml.py index 439704807be80664efeb29a305375d6c6425c110..ce49c4f205493ad80d9af536a457fbdecac5b705 100644 --- a/arkindex/documents/api/ml.py +++ b/arkindex/documents/api/ml.py @@ -131,7 +131,7 @@ class TranscriptionEdit(RetrieveUpdateDestroyAPIView): errors = defaultdict(list) if Right.Write not in rights: errors['__all__'].append('A write access to transcription element corpus is required.') - if Right.Admin not in rights and not transcription.worker_version_id: + if Right.Admin not in rights and transcription.worker_version_id: errors['__all__'].append('Only admins can edit non-manual transcription.') if (errors): raise PermissionDenied(errors) diff --git a/arkindex/documents/tests/test_classes.py b/arkindex/documents/tests/test_classes.py index d20945f3fb7bf5a687e5aaedbdfa6680a624c4f1..c785d526396a7231219ec6e4095c9d32e6ebd3ea 100644 --- a/arkindex/documents/tests/test_classes.py +++ b/arkindex/documents/tests/test_classes.py @@ -240,7 +240,7 @@ class TestClasses(FixtureAPITestCase): for elt in data['results']: self.assertCountEqual( list(map(lambda c: (c['worker_version'], c['confidence']), elt['best_classes'])), - [(str(self.version2.id), .99), ('test', .99)] + [(str(self.version1.id), .99), (str(self.version2.id), .99)] ) def test_list_elements_best_classes_false(self): @@ -390,7 +390,6 @@ class TestClasses(FixtureAPITestCase): self.populate_classified_elements() element = Element.objects.filter(type=self.classified.id).first() element.classifications.create( - worker_version=self.version1, ml_class=self.text, confidence=.1337, high_confidence=True, diff --git a/arkindex/documents/tests/test_entities_api.py b/arkindex/documents/tests/test_entities_api.py index ad84fa2132a5dc7caae2bf3bc2eee8831fbfa934..f39b3923ced8a3595a56cbe497b70e5d3aaacab0 100644 --- a/arkindex/documents/tests/test_entities_api.py +++ b/arkindex/documents/tests/test_entities_api.py @@ -591,10 +591,11 @@ class TestEntitiesAPI(FixtureAPITestCase): md = self.element.metadatas.create(name='some_metadata', type=MetaType.Location, value='something') md.entity = self.entity_bis md.save() - with self.assertNumQueries(9): + with self.assertNumQueries(6): response = self.client.get(reverse('api:element-entities', kwargs={'pk': str(self.element.id)})) self.assertEqual(response.status_code, status.HTTP_200_OK) data = response.json() + self.maxDiff = None self.assertDictEqual( data, { @@ -609,7 +610,7 @@ class TestEntitiesAPI(FixtureAPITestCase): 'metas': None, 'validated': t.entity.validated, 'dates': [], - 'worker_version_id': str(self.worker_version_1.id), + 'worker_version_id': str(self.worker_version_2.id), }, 'offset': t.offset, 'length': t.length @@ -622,7 +623,7 @@ class TestEntitiesAPI(FixtureAPITestCase): 'metas': None, 'validated': m.entity.validated, 'dates': [], - 'worker_version_id': str(self.worker_version_1.id), + 'worker_version_id': str(m.entity.worker_version_id), }, 'id': str(m.id), 'type': m.type.value, diff --git a/arkindex/documents/tests/test_moderation.py b/arkindex/documents/tests/test_moderation.py index 95fab997cf3c3dda3c92acffa8f37899d901d541..043e18c68027f8c4311de48c82a9fe595fc682eb 100644 --- a/arkindex/documents/tests/test_moderation.py +++ b/arkindex/documents/tests/test_moderation.py @@ -261,7 +261,10 @@ class TestClasses(FixtureAPITestCase): self.assertEqual(classification.moderator, self.user) def test_classification_validate_without_permissions(self): - classification = self._create_classification_from_source() + classification = self.element.classifications.create( + ml_class=self.text, + confidence=.5, + ) with self.assertNumQueries(0): response = self.client.put(reverse('api:classification-validate', kwargs={'pk': classification.id})) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) @@ -274,7 +277,7 @@ class TestClasses(FixtureAPITestCase): confidence=.1, ) - with self.assertNumQueries(6): + with self.assertNumQueries(5): response = self.client.put(reverse('api:classification-reject', kwargs={'pk': classification.id})) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -316,13 +319,16 @@ class TestClasses(FixtureAPITestCase): def test_classification_can_still_be_moderated(self): self.client.force_login(self.user) - classification = self._create_classification_from_source() - classification.moderator = self.user - classification.state = ClassificationState.Validated.value - classification.save() + classification = self.element.classifications.create( + ml_class=self.text, + confidence=.5, + moderator=self.user, + state=ClassificationState.Validated, + worker_version=self.worker_version_2, + ) # First try to reject - with self.assertNumQueries(6): + with self.assertNumQueries(5): response = self.client.put(reverse('api:classification-reject', kwargs={'pk': classification.id})) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -335,11 +341,11 @@ class TestClasses(FixtureAPITestCase): 'state': ClassificationState.Rejected.value, 'confidence': classification.confidence, 'high_confidence': False, - 'worker_version': None + 'worker_version': str(self.worker_version_2.id), }) # Then try to validate - with self.assertNumQueries(6): + with self.assertNumQueries(5): response = self.client.put(reverse('api:classification-validate', kwargs={'pk': classification.id})) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -352,7 +358,7 @@ class TestClasses(FixtureAPITestCase): 'state': ClassificationState.Validated.value, 'confidence': classification.confidence, 'high_confidence': False, - 'worker_version': None + 'worker_version': str(self.worker_version_2.id) }) def test_classification_selection_requires_login(self): @@ -457,7 +463,7 @@ class TestClasses(FixtureAPITestCase): [str(self.element.id), str(self.folder.id), str(act_x.id), str(act_y.id)], ) - with self.assertNumQueries(14): + with self.assertNumQueries(10): response = self.client.post( reverse('api:classification-selection'), data={'corpus_id': self.corpus.id, 'ml_class': self.text.id, 'mode': 'create'} diff --git a/arkindex/documents/tests/test_transcriptions.py b/arkindex/documents/tests/test_transcriptions.py index 861b2e2d0483f56f61d145ca4391e4ed62753935..619d9ae08ca099f7855f7b049d5478b44a8541d1 100644 --- a/arkindex/documents/tests/test_transcriptions.py +++ b/arkindex/documents/tests/test_transcriptions.py @@ -24,7 +24,8 @@ class TestTranscriptions(FixtureAPITestCase): cls.private_read_user = User.objects.create_user('a@bc.de', 'a') cls.private_read_user.verified_email = True cls.private_read_user.save() - cls.worker_version = WorkerVersion.objects.get(worker__slug='reco') + cls.worker_version_1 = WorkerVersion.objects.get(worker__slug='reco') + cls.worker_version_2 = WorkerVersion.objects.get(worker__slug='dla') def test_list_transcriptions_read_right(self): # A read right on the element corpus is required to access transcriptions @@ -37,7 +38,7 @@ class TestTranscriptions(FixtureAPITestCase): tr1 = self.page.transcriptions.get() tr2 = self.page.transcriptions.create( text='something', - worker_version=self.worker_version, + worker_version=self.worker_version_2, score=0.369, ) self.client.force_login(self.user) @@ -51,14 +52,14 @@ class TestTranscriptions(FixtureAPITestCase): 'id': str(tr1.id), 'text': 'Lorem ipsum dolor sit amet', 'score': 1.0, - 'worker_version_id': None, + 'worker_version_id': str(self.worker_version_1.id), 'element': None, }, { 'id': str(tr2.id), 'text': 'something', 'score': 0.369, - 'worker_version_id': str(self.worker_version.id), + 'worker_version_id': str(self.worker_version_2.id), 'element': None, } ]) @@ -88,7 +89,7 @@ class TestTranscriptions(FixtureAPITestCase): def test_list_worker_version_transcriptions(self): worker_transcription = self.page.transcriptions.create( text='something', - worker_version=self.worker_version, + worker_version=self.worker_version_2, score=0.369, ) @@ -97,7 +98,7 @@ class TestTranscriptions(FixtureAPITestCase): with self.assertNumQueries(12): response = self.client.get( reverse('api:element-transcriptions', kwargs={'pk': str(self.page.id)}), - data={'recursive': 'true', 'worker_version': str(self.worker_version.id)} + data={'recursive': 'true', 'worker_version': str(self.worker_version_2.id)} ) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -106,7 +107,7 @@ class TestTranscriptions(FixtureAPITestCase): 'id': str(worker_transcription.id), 'text': 'something', 'score': 0.369, - 'worker_version_id': str(self.worker_version.id), + 'worker_version_id': str(self.worker_version_2.id), 'element': { 'id': str(self.page.id), 'name': 'Volume 1, page 1r', diff --git a/arkindex/project/tests/test_elastic.py b/arkindex/project/tests/test_elastic.py index 4f5f7d854584ec70b8736ed266ed20b6c8758462..3a9da527cdd6aa2404319dbadad7ba6d24d4d2f1 100644 --- a/arkindex/project/tests/test_elastic.py +++ b/arkindex/project/tests/test_elastic.py @@ -60,7 +60,7 @@ class TestESDocuments(FixtureAPITestCase): surface.add_parent(page) surface.transcriptions.create( text='invisible transcription', - source=WorkerVersion.objects.get(worker__slug='reco'), + worker_version=WorkerVersion.objects.get(worker__slug='reco'), ) texts = [tr['text'] for tr in ESElement.from_model(page).to_dict()['transcriptions']] self.assertNotIn('invisible transcription', texts)