From f838c94d1f458821075f9254c5a98f4bcd056f52 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Mon, 19 Oct 2020 20:01:27 +0200
Subject: [PATCH] Make converters robust to empty initial database

---
 colleges/converters.py | 11 +++++++++--
 journals/converters.py | 11 +++++++++--
 ontology/converters.py | 20 +++++++++++++++++---
 3 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/colleges/converters.py b/colleges/converters.py
index ffcbdaadd..14efc72df 100644
--- a/colleges/converters.py
+++ b/colleges/converters.py
@@ -2,13 +2,20 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
 __license__ = "AGPL v3"
 
 
-from colleges.models import College
+from django.db.utils import ProgrammingError
 
 
 class CollegeSlugConverter:
-    regex = '|'.join([c.slug for c in College.objects.all()])
+
+    def __init__(self):
+        try:
+            from colleges.models import College
+            self.regex = '|'.join([c.slug for c in College.objects.all()])
+        except ProgrammingError:
+            self.regex = 'physics'
 
     def to_python(self, value):
+        from colleges.models import College
         try:
             return College.objects.get(slug=value)
         except College.DoesNotExist:
diff --git a/journals/converters.py b/journals/converters.py
index 3064cbb38..f65b6a302 100644
--- a/journals/converters.py
+++ b/journals/converters.py
@@ -2,13 +2,20 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
 __license__ = "AGPL v3"
 
 
-from journals.models import Journal
+from django.db.utils import ProgrammingError
 
 
 class JournalDOILabelConverter:
-    regex = '|'.join([j.doi_label for j in Journal.objects.all()])
+
+    def __init__(self):
+        try:
+            from journals.models import Journal
+            self.regex = '|'.join([j.doi_label for j in Journal.objects.all()])
+        except ProgrammingError:
+            self.regex = 'SciPost'
 
     def to_python(self, value):
+        from journals.models import Journal
         try:
             return Journal.objects.get(doi_label=value).doi_label
         except Journal.DoesNotExist:
diff --git a/ontology/converters.py b/ontology/converters.py
index c12848a46..dcc9e90e4 100644
--- a/ontology/converters.py
+++ b/ontology/converters.py
@@ -2,13 +2,20 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
 __license__ = "AGPL v3"
 
 
-from .models import AcademicField, Specialty
+from django.db.utils import ProgrammingError
 
 
 class AcademicFieldSlugConverter:
-    regex = '|'.join([a.slug for a in AcademicField.objects.all()])
+
+    def __init__(self):
+        try:
+            from ontology.models import AcademicField 
+            self.regex = '|'.join([a.slug for a in AcademicField.objects.all()])
+        except ProgrammingError:
+            self.regex = 'physics'
 
     def to_python(self, value):
+        from ontology.models import AcademicField
         try:
             return AcademicField.objects.get(slug=value)
         except AcademicField.DoesNotExist:
@@ -20,9 +27,16 @@ class AcademicFieldSlugConverter:
 
 
 class SpecialtySlugConverter:
-    regex = '|'.join([s.slug for s in Specialty.objects.all()])
+
+    def __init__(self):
+        try:
+            from ontology.models import Specialty
+            self.regex = '|'.join([s.slug for s in Specialty.objects.all()])
+        except ProgrammingError:
+            self.regex = 'phys-ct'
 
     def to_python(self, value):
+        from ontology.models import Specialty
         try:
             return Specialty.objects.get(slug=value)
         except Specialty.DoesNotExist:
-- 
GitLab