From b90828d7d16b38052bd45f6df1f3d093799e7cee Mon Sep 17 00:00:00 2001
From: Bryan Newbold <bnewbold@robocracy.org>
Date: Thu, 31 Jan 2019 16:51:00 -0800
Subject: flag to control boolean cast in elastic transforms

So these functions can be re-used in simplified webface rendering.
---
 python/fatcat_tools/transforms.py | 42 +++++++++++++++++++++++++++------------
 1 file changed, 29 insertions(+), 13 deletions(-)

diff --git a/python/fatcat_tools/transforms.py b/python/fatcat_tools/transforms.py
index b9b22e0b..e95d6d30 100644
--- a/python/fatcat_tools/transforms.py
+++ b/python/fatcat_tools/transforms.py
@@ -44,7 +44,7 @@ def test_check_kbart():
     assert check_kbart(1950, dict(year_spans=[[1900, 1920], [1990, 2000]])) == False
     assert check_kbart(1950, dict(year_spans=[[1900, 1920], [1930, 2000]])) == True
 
-def release_to_elasticsearch(entity):
+def release_to_elasticsearch(entity, force_bool=True):
     """
     Converts from an entity model/schema to elasticsearch oriented schema.
 
@@ -205,17 +205,27 @@ def release_to_elasticsearch(entity):
 
     if is_longtail_oa:
         is_oa = True
-    t['is_oa'] = bool(is_oa)
-    t['is_longtail_oa'] = bool(is_longtail_oa)
-    t['in_kbart'] = bool(in_kbart)
-    t['in_jstor'] = bool(in_jstor)
-    t['in_web'] = bool(in_web)
-    t['in_dweb'] = bool(in_dweb)
+
+    if force_bool:
+        t['is_oa'] = bool(is_oa)
+        t['is_longtail_oa'] = bool(is_longtail_oa)
+        t['in_kbart'] = bool(in_kbart)
+        t['in_jstor'] = bool(in_jstor)
+        t['in_web'] = bool(in_web)
+        t['in_dweb'] = bool(in_dweb)
+    else:
+        t['is_oa'] = is_oa
+        t['is_longtail_oa'] = is_longtail_oa
+        t['in_kbart'] = in_kbart
+        t['in_jstor'] = in_jstor
+        t['in_web'] = in_web
+        t['in_dweb'] = in_dweb
+
     t['in_ia'] = bool(in_ia)
     t['is_preserved'] = bool(is_preserved or in_ia or in_kbart or in_jstor)
     return t
 
-def container_to_elasticsearch(entity):
+def container_to_elasticsearch(entity, force_bool=True):
     """
     Converts from an entity model/schema to elasticsearch oriented schema.
 
@@ -290,13 +300,19 @@ def container_to_elasticsearch(entity):
 
     t['in_doaj'] = bool(in_doaj)
     t['in_road'] = bool(in_road)
-    t['in_doi'] = bool(in_doi)
     t['in_sherpa_romeo'] = bool(in_sherpa_romeo)
-    t['is_oa'] = bool(in_doaj or in_road or is_longtail_oa or is_oa)
-    t['is_longtail_oa'] = bool(is_longtail_oa)
     t['any_kbart'] = bool(any_kbart)
-    t['any_jstor'] = bool(any_jstor)
-    t['any_ia_sim'] = bool(any_ia_sim)
+    t['is_longtail_oa'] = bool(is_longtail_oa)
+    if force_bool:
+        t['in_doi'] = bool(in_doi)
+        t['is_oa'] = bool(in_doaj or in_road or is_longtail_oa or is_oa)
+        t['any_jstor'] = bool(any_jstor)
+        t['any_ia_sim'] = bool(any_ia_sim)
+    else:
+        t['in_doi'] = in_doi
+        t['is_oa'] = in_doaj or in_road or is_longtail_oa or is_oa
+        t['any_jstor'] = any_jstor
+        t['any_ia_sim'] = any_ia_sim
     return t
 
 
-- 
cgit v1.2.3