diff --git a/arkindex/documents/api/entities.py b/arkindex/documents/api/entities.py index bc94fd03f65369dde228c8a50537854c19a9066c..fc2b546fee97c4004409b1a03f373e0ed9c5e3c9 100644 --- a/arkindex/documents/api/entities.py +++ b/arkindex/documents/api/entities.py @@ -224,7 +224,7 @@ class TranscriptionEntityCreate(CreateAPIView): tr = Transcription.objects.using('default').filter( id=self.kwargs.get('pk'), element__corpus__in=Corpus.objects.writable(self.request.user) - ).first() + ).select_related('element').only('id', 'text', 'element__corpus_id').first() return {**context, 'transcription': tr} def perform_create(self, serializer): diff --git a/arkindex/documents/models.py b/arkindex/documents/models.py index 20556a5bf431b25bbb428366e7bc88c7f0221865..565c09cb1cb5d336286e6f8de68d5ec8fee83d5c 100644 --- a/arkindex/documents/models.py +++ b/arkindex/documents/models.py @@ -756,7 +756,7 @@ class TranscriptionEntity(models.Model): ] def clean(self): - if self.transcription.element.corpus != self.entity.corpus: + if self.transcription.element.corpus_id != self.entity.corpus_id: raise ValidationError('Transcription and Entity are not in the same corpus') if self.offset + self.length > len(self.transcription.text): raise ValidationError('Entity position overflows text size') diff --git a/arkindex/documents/tests/test_entities_api.py b/arkindex/documents/tests/test_entities_api.py index a3513bec62df12928564f1f74f7524535333a2db..ffc35ce38bab4dc2c227518fd68a91e50db3f8dd 100644 --- a/arkindex/documents/tests/test_entities_api.py +++ b/arkindex/documents/tests/test_entities_api.py @@ -441,13 +441,13 @@ class TestEntitiesAPI(FixtureAPITestCase): def test_create_transcription_entity(self): self.client.force_login(self.user) - with self.assertNumQueries(11): + with self.assertNumQueries(8): response = self.client.post( reverse('api:transcription-entity-create', kwargs={'pk': str(self.transcription.id)}), data=self.tr_entities_sample, format='json' ) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) transcription_entity = TranscriptionEntity.objects.get( transcription=self.transcription, entity=self.entity, @@ -469,12 +469,13 @@ class TestEntitiesAPI(FixtureAPITestCase): def test_create_transcription_entity_with_confidence(self): self.client.force_login(self.user) - response = self.client.post( - reverse('api:transcription-entity-create', kwargs={'pk': str(self.transcription.id)}), - data=self.tr_entities_confidence_sample, - format='json' - ) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + with self.assertNumQueries(8): + response = self.client.post( + reverse('api:transcription-entity-create', kwargs={'pk': str(self.transcription.id)}), + data=self.tr_entities_confidence_sample, + format='json' + ) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) transcription_entity = TranscriptionEntity.objects.get( transcription=self.transcription, entity=self.entity, @@ -505,13 +506,13 @@ class TestEntitiesAPI(FixtureAPITestCase): def test_create_transcription_entity_worker_version(self): self.client.force_login(self.user) - with self.assertNumQueries(12): + with self.assertNumQueries(9): response = self.client.post( reverse('api:transcription-entity-create', kwargs={'pk': str(self.transcription.id)}), data=self.tr_entities_version_sample, format='json' ) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) transcription_entity = TranscriptionEntity.objects.get( transcription=self.transcription, entity=self.entity, @@ -522,13 +523,13 @@ class TestEntitiesAPI(FixtureAPITestCase): def test_create_transcription_entity_worker_version_internal_user(self): self.client.force_login(self.internal_user) - with self.assertNumQueries(10): + with self.assertNumQueries(7): response = self.client.post( reverse('api:transcription-entity-create', kwargs={'pk': str(self.transcription.id)}), data=self.tr_entities_version_sample, format='json' ) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) transcription_entity = TranscriptionEntity.objects.get( transcription=self.transcription, entity=self.entity, @@ -539,13 +540,13 @@ class TestEntitiesAPI(FixtureAPITestCase): def test_create_transcription_entity_worker_run(self): self.client.force_login(self.user) - with self.assertNumQueries(12): + with self.assertNumQueries(9): response = self.client.post( reverse('api:transcription-entity-create', kwargs={'pk': str(self.transcription.id)}), data=self.tr_entities_run_sample, format='json' ) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertDictEqual(response.json(), { 'entity': self.tr_entities_run_sample['entity'], 'offset': self.tr_entities_run_sample['offset'],