Skip to content
Snippets Groups Projects
Commit 9dab7bea authored by ml bonhomme's avatar ml bonhomme :bee: Committed by Erwan Rouchet
Browse files

Create corpusworkerversion for transkribus imports

parent 95e8b766
No related branches found
No related tags found
1 merge request!1826Create corpusworkerversion for transkribus imports
......@@ -498,6 +498,9 @@ class Process(IndexableModel):
CorpusWorkerVersion(corpus_id=self.corpus_id, worker_version_id=worker_version_id)
for worker_version_id in self.worker_runs.values_list('version_id', flat=True)
], ignore_conflicts=True)
if self.mode == ProcessMode.Transkribus:
worker_version_id = settings.TRANSKRIBUS_WORKER_VERSION
CorpusWorkerVersion.objects.get_or_create(corpus_id=self.corpus_id, worker_version_id=worker_version_id)
def retry(self):
if self.mode == ProcessMode.Repository and self.revision is not None and not self.revision.repo.enabled:
......
......@@ -6,14 +6,14 @@ from django.test import override_settings
from django.urls import reverse
from rest_framework import status
from arkindex.process.models import Process, ProcessMode
from arkindex.process.models import Process, ProcessMode, Repository, Revision, Worker, WorkerType, WorkerVersion
from arkindex.project.default_corpus import DEFAULT_TRANSKRIBUS_TYPES
from arkindex.project.tests import FixtureAPITestCase
from arkindex.users.models import Role, User
from ponos.models import State
@override_settings(TRANSKRIBUS_EMAIL="arkindex@teklia.com", TRANSKRIBUS_PASSWORD=None, TRANSKRIBUS_WORKER_VERSION="12345-12345")
@override_settings(TRANSKRIBUS_EMAIL="arkindex@teklia.com", TRANSKRIBUS_PASSWORD=None)
class TestTranskribusImport(FixtureAPITestCase):
"""
Test transkribus import
......@@ -23,6 +23,25 @@ class TestTranskribusImport(FixtureAPITestCase):
def setUpTestData(cls):
super().setUpTestData()
User.objects.update(transkribus_email="nope@nope.fr")
cls.repo = Repository.objects.create(url='http://fakery')
cls.tr_type = WorkerType.objects.create(slug='import', display_name='Import')
cls.transkribus_worker = Worker.objects.create(
repository=cls.repo,
name='Transkribus Import',
slug='transkribus_import',
type=cls.tr_type
)
cls.transkribus_rev = Revision.objects.create(
hash='1234',
message='commit commit',
author='Wolpertinger',
repo=cls.repo,
)
cls.transkribus_worker_version = WorkerVersion.objects.create(
worker=cls.transkribus_worker,
revision=cls.transkribus_rev,
configuration={}
)
def test_requires_login(self):
response = self.client.post(reverse("api:import-transkribus"))
......@@ -76,9 +95,12 @@ class TestTranskribusImport(FixtureAPITestCase):
mock_transkribus.return_value = [{"email": "nope@nope.fr"}, {"email": "arkindex@teklia.com"}]
self.client.force_login(self.user)
response = self.client.post(reverse("api:import-transkribus"), {
"collection_id": "12345",
}, format="json")
transkribus_worker_version_id = None
with self.settings(TRANSKRIBUS_WORKER_VERSION=self.transkribus_worker_version.id):
response = self.client.post(reverse("api:import-transkribus"), {
"collection_id": "12345",
}, format="json")
transkribus_worker_version_id = str(settings.TRANSKRIBUS_WORKER_VERSION)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
data = response.json()
process = Process.objects.get(id=data["id"])
......@@ -111,7 +133,7 @@ class TestTranskribusImport(FixtureAPITestCase):
'ARKINDEX_CORPUS_ID': str(corpus.id),
'TRANSKRIBUS_EMAIL': settings.TRANSKRIBUS_EMAIL,
'TRANSKRIBUS_PASSWORD': settings.TRANSKRIBUS_PASSWORD,
'TRANSKRIBUS_WORKER_VERSION': settings.TRANSKRIBUS_WORKER_VERSION
'TRANSKRIBUS_WORKER_VERSION': transkribus_worker_version_id
},
'tasks': {
'export_transkribus': {
......@@ -130,3 +152,26 @@ class TestTranskribusImport(FixtureAPITestCase):
}
}
})
@override_settings(
PONOS_RECIPE={}
)
@patch("transkribus.TranskribusAPI.list_user_collection")
def test_corpus_worker_version_list_transkribus(self, mock_transkribus):
mock_transkribus.return_value = [{"email": "nope@nope.fr"}, {"email": "arkindex@teklia.com"}]
self.client.force_login(self.user)
with self.settings(TRANSKRIBUS_WORKER_VERSION=self.transkribus_worker_version.id):
response = self.client.post(reverse("api:import-transkribus"), {
"collection_id": "12345",
}, format="json")
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
data = response.json()
process = Process.objects.get(id=data["id"])
self.assertEqual(process.mode, ProcessMode.Transkribus)
corpus = process.corpus
with self.assertNumQueries(8):
response = self.client.get(reverse('api:corpus-versions', kwargs={'pk': corpus.id}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.json()['results']), 1)
self.assertEqual(response.json()['results'][0]['id'], str(self.transkribus_worker_version.id))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment