From c0816dd4dca29d261d301906eab83ec4a009c98c Mon Sep 17 00:00:00 2001
From: vrigal <rigal@teklia.com>
Date: Mon, 2 Dec 2019 15:44:23 +0100
Subject: [PATCH] Switch to structural MetaType

---
 arkindex/documents/api/elements.py            | 42 +++++++++++--------
 arkindex/documents/api/search.py              |  2 +-
 ...etadata.py => 0028_structural_metadata.py} | 10 ++---
 arkindex/project/elastic.py                   |  6 +--
 4 files changed, 33 insertions(+), 27 deletions(-)
 rename arkindex/documents/migrations/{0028_structure_metadata.py => 0028_structural_metadata.py} (76%)

diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py
index 83860011ad..4e7f0badf8 100644
--- a/arkindex/documents/api/elements.py
+++ b/arkindex/documents/api/elements.py
@@ -119,11 +119,13 @@ class ElementsList(CorpusACLMixin, ListAPIView):
                 }
             },
             {
-                'name': 'structure',
+                'name': 'structural_metadata',
                 'in': 'query',
                 'description': 'Filter elements by a structural metadata.',
                 'required': False,
-                'schema': {'type': 'string'},
+                'schema': {
+                    'type': 'string'
+                }
             }
         ]
     }
@@ -147,11 +149,11 @@ class ElementsList(CorpusACLMixin, ListAPIView):
         if only_folder is not None:
             filters['type__folder'] = only_folder.lower() not in ('false', '0')
 
-        structure_param = self.request.query_params.get('structure')
-        if structure_param is not None:
+        structural_metadata = self.request.query_params.get('structural_metadata')
+        if structural_metadata is not None:
             filters['metadatas__in'] = MetaData.objects.filter(
-                type=MetaType.Structure,
-                value__icontains=structure_param
+                type=MetaType.Structural,
+                value__icontains=structural_metadata
             )
 
         if 'corpus' in self.request.query_params:
@@ -390,11 +392,13 @@ class ElementParents(ListAPIView):
                 }
             },
             {
-                'name': 'structure',
+                'name': 'structural_metadata',
                 'in': 'query',
                 'description': 'Filter elements by a structural metadata.',
                 'required': False,
-                'schema': {'type': 'string'},
+                'schema': {
+                    'type': 'string'
+                }
             }
         ]
     }
@@ -419,11 +423,11 @@ class ElementParents(ListAPIView):
         if only_folder is not None:
             filters['type__folder'] = only_folder.lower() not in ('false', '0')
 
-        structure_param = self.request.query_params.get('structure')
-        if structure_param is not None:
+        structural_metadata = self.request.query_params.get('structural_metadata')
+        if structural_metadata is not None:
             filters['metadatas__in'] = MetaData.objects.filter(
-                type=MetaType.Structure,
-                value__icontains=structure_param
+                type=MetaType.Structural,
+                value__icontains=structural_metadata
             )
 
         recursive_param = self.request.query_params.get('recursive')
@@ -542,11 +546,13 @@ class ElementChildren(ListAPIView):
                 }
             },
             {
-                'name': 'structure',
+                'name': 'structural_metadata',
                 'in': 'query',
                 'description': 'Filter elements by a structural metadata.',
                 'required': False,
-                'schema': {'type': 'string'},
+                'schema': {
+                    'type': 'string'
+                }
             }
         ]
     }
@@ -571,11 +577,11 @@ class ElementChildren(ListAPIView):
         if only_folder is not None:
             filters['type__folder'] = only_folder.lower() not in ('false', '0')
 
-        structure_param = self.request.query_params.get('structure')
-        if structure_param is not None:
+        structural_metadata = self.request.query_params.get('structural_metadata')
+        if structural_metadata is not None:
             filters['metadatas__in'] = MetaData.objects.filter(
-                type=MetaType.Structure,
-                value__icontains=structure_param
+                type=MetaType.Structural,
+                value__icontains=structural_metadata
             )
 
         recursive_param = self.request.query_params.get('recursive')
diff --git a/arkindex/documents/api/search.py b/arkindex/documents/api/search.py
index 4860f73c67..fe72423bfe 100644
--- a/arkindex/documents/api/search.py
+++ b/arkindex/documents/api/search.py
@@ -56,7 +56,7 @@ class ElementSearch(SearchAPIView):
         if structural_metadata:
             search = search.filter(
                 'wildcard',
-                structure='*{}*'.format(structural_metadata)
+                structural_metadata='*{}*'.format(structural_metadata)
             )
 
         if element_type:
diff --git a/arkindex/documents/migrations/0028_structure_metadata.py b/arkindex/documents/migrations/0028_structural_metadata.py
similarity index 76%
rename from arkindex/documents/migrations/0028_structure_metadata.py
rename to arkindex/documents/migrations/0028_structural_metadata.py
index bca21aac81..4fe0ccb8ad 100644
--- a/arkindex/documents/migrations/0028_structure_metadata.py
+++ b/arkindex/documents/migrations/0028_structural_metadata.py
@@ -16,19 +16,19 @@ def update_balsac_pages(apps, schema_editor):
     print('Renamed {} metadata from BALSAC corpora'.format(renamed_count))
 
 
-def structure_metadata(apps, schema_editor):
+def structural_metadata(apps, schema_editor):
     """
     Update reference
     """
     MetaData = apps.get_model('documents', 'MetaData')
     references = MetaData.objects.filter(Q(name='Reference') | Q(name='reference'), type=MetaType.Text)
-    moved_count = references.update(type=MetaType.Structure)
-    print('Moved {} reference metadata to Structure type'.format(moved_count))
+    moved_count = references.update(type=MetaType.Structural)
+    print('Moved {} reference metadata to Structural type'.format(moved_count))
 
 
 def reverse_migration(apps, schema_editor):
     MetaData = apps.get_model('documents', 'MetaData')
-    MetaData.objects.filter(type=MetaType.Structure).update(type=MetaType.Text)
+    MetaData.objects.filter(type=MetaType.Structural).update(type=MetaType.Text)
 
 
 class Migration(migrations.Migration):
@@ -39,5 +39,5 @@ class Migration(migrations.Migration):
 
     operations = [
         migrations.RunPython(update_balsac_pages, migrations.RunPython.noop),
-        migrations.RunPython(structure_metadata, reverse_migration)
+        migrations.RunPython(structural_metadata, reverse_migration)
     ]
diff --git a/arkindex/project/elastic.py b/arkindex/project/elastic.py
index 6c2779bab3..cd122035f5 100644
--- a/arkindex/project/elastic.py
+++ b/arkindex/project/elastic.py
@@ -95,7 +95,7 @@ class ESElement(Document):
     corpus = Keyword()
     # Used exclusively for sorting
     parents = Keyword()
-    structure = Keyword()
+    structural_metadata = Keyword()
     transcriptions = Nested(ESTranscriptionInnerDoc)
     date_range = RawDateRange(format='yyyy||yyyy-MM||yyyy-MM-dd')
 
@@ -138,9 +138,9 @@ class ESElement(Document):
                 element.name
                 for element in Element.objects.get_ascending(instance.id)
             ],
-            structure=[
+            structural_metadata=[
                 md.value
-                for md in instance.metadatas.filter(type=MetaType.Structure)
+                for md in instance.metadatas.filter(type=MetaType.Structural)
             ],
             transcriptions=list(map(
                 ESTranscriptionInnerDoc.from_model,
-- 
GitLab