From 0acd877e6d80e4949d9060d4834d80bd00853f44 Mon Sep 17 00:00:00 2001
From: manon blanco <blanco@teklia.com>
Date: Wed, 11 Nov 2020 09:53:23 +0000
Subject: [PATCH] Support worker version as an env variable for the Transkribus
 import

---
 arkindex/dataimport/models.py                        | 2 ++
 arkindex/dataimport/tests/test_transkribus_import.py | 8 +++++---
 arkindex/project/config.py                           | 2 ++
 arkindex/project/settings.py                         | 1 +
 arkindex/project/tests/config_samples/defaults.yaml  | 1 +
 arkindex/project/tests/config_samples/override.yaml  | 1 +
 6 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/arkindex/dataimport/models.py b/arkindex/dataimport/models.py
index 01dfc88346..4380f6df6c 100644
--- a/arkindex/dataimport/models.py
+++ b/arkindex/dataimport/models.py
@@ -210,6 +210,8 @@ class DataImport(IndexableModel):
         if self.mode == DataImportMode.Transkribus:
             recipe['env']['TRANSKRIBUS_EMAIL'] = settings.TRANSKRIBUS_EMAIL
             recipe['env']['TRANSKRIBUS_PASSWORD'] = settings.TRANSKRIBUS_PASSWORD
+            if settings.TRANSKRIBUS_WORKER_VERSION:
+                recipe['env']['TRANSKRIBUS_WORKER_VERSION'] = str(settings.TRANSKRIBUS_WORKER_VERSION)
         return Workflow.objects.create(recipe=yaml.dump(recipe))
 
     def start(self, chunks=None, thumbnails=False, corpus_id=None):
diff --git a/arkindex/dataimport/tests/test_transkribus_import.py b/arkindex/dataimport/tests/test_transkribus_import.py
index ea8f869f6d..a9dfbfb88e 100644
--- a/arkindex/dataimport/tests/test_transkribus_import.py
+++ b/arkindex/dataimport/tests/test_transkribus_import.py
@@ -14,7 +14,7 @@ from arkindex_common.enums import DataImportMode
 from ponos.models import State
 
 
-@override_settings(TRANSKRIBUS_EMAIL="arkindex@teklia.com", TRANSKRIBUS_PASSWORD=None)
+@override_settings(TRANSKRIBUS_EMAIL="arkindex@teklia.com", TRANSKRIBUS_PASSWORD=None, TRANSKRIBUS_WORKER_VERSION="12345-12345")
 class TestTranskribusImport(FixtureAPITestCase):
     """
     Test transkribus import
@@ -110,7 +110,8 @@ class TestTranskribusImport(FixtureAPITestCase):
             'env': {
                 'ARKINDEX_PROCESS_ID': str(dataimport.id),
                 'TRANSKRIBUS_EMAIL': settings.TRANSKRIBUS_EMAIL,
-                'TRANSKRIBUS_PASSWORD': settings.TRANSKRIBUS_PASSWORD
+                'TRANSKRIBUS_PASSWORD': settings.TRANSKRIBUS_PASSWORD,
+                'TRANSKRIBUS_WORKER_VERSION': settings.TRANSKRIBUS_WORKER_VERSION
             },
             'tasks': {
                 'import': {
@@ -170,7 +171,8 @@ class TestTranskribusImport(FixtureAPITestCase):
             'env': {
                 'ARKINDEX_PROCESS_ID': str(dataimport.id),
                 'TRANSKRIBUS_EMAIL': settings.TRANSKRIBUS_EMAIL,
-                'TRANSKRIBUS_PASSWORD': settings.TRANSKRIBUS_PASSWORD
+                'TRANSKRIBUS_PASSWORD': settings.TRANSKRIBUS_PASSWORD,
+                'TRANSKRIBUS_WORKER_VERSION': settings.TRANSKRIBUS_WORKER_VERSION
             },
             'tasks': {
                 'import': {
diff --git a/arkindex/project/config.py b/arkindex/project/config.py
index 7ac6818b77..c88c936c41 100644
--- a/arkindex/project/config.py
+++ b/arkindex/project/config.py
@@ -1,3 +1,4 @@
+import uuid
 from enum import Enum
 from pathlib import Path
 
@@ -76,6 +77,7 @@ def get_settings_parser(base_dir):
     transkribus_parser = parser.add_subparser('transkribus', default={})
     transkribus_parser.add_option('email', type=str, default=None)
     transkribus_parser.add_option('password', type=str, default=None)
+    transkribus_parser.add_option('worker_version', type=uuid.UUID, default=None)
 
     gitlab_parser = parser.add_subparser('gitlab', default={})
     gitlab_parser.add_option('app_id', type=str, default=None)
diff --git a/arkindex/project/settings.py b/arkindex/project/settings.py
index 30621b7971..831580f6de 100644
--- a/arkindex/project/settings.py
+++ b/arkindex/project/settings.py
@@ -244,6 +244,7 @@ CHECK_IMAGES_SAMPLE_SIZE = 20
 # Transkribus credentials
 TRANSKRIBUS_EMAIL = conf['transkribus']['email']
 TRANSKRIBUS_PASSWORD = conf['transkribus']['password']
+TRANSKRIBUS_WORKER_VERSION = conf['transkribus']['worker_version']
 
 # GitLab OAuth
 GITLAB_APP_ID = conf['gitlab']['app_id']
diff --git a/arkindex/project/tests/config_samples/defaults.yaml b/arkindex/project/tests/config_samples/defaults.yaml
index 55c3c32745..2cb2c8bb54 100644
--- a/arkindex/project/tests/config_samples/defaults.yaml
+++ b/arkindex/project/tests/config_samples/defaults.yaml
@@ -78,3 +78,4 @@ static:
 transkribus:
   email: null
   password: null
+  worker_version: null
diff --git a/arkindex/project/tests/config_samples/override.yaml b/arkindex/project/tests/config_samples/override.yaml
index fcadbc530c..5e01fcaa90 100644
--- a/arkindex/project/tests/config_samples/override.yaml
+++ b/arkindex/project/tests/config_samples/override.yaml
@@ -93,3 +93,4 @@ static:
 transkribus:
   email: nope@nope
   password: superSecret
+  worker_version: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
-- 
GitLab