summaryrefslogtreecommitdiffstats
path: root/python/fatcat_web/entity_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/fatcat_web/entity_helpers.py')
-rw-r--r--python/fatcat_web/entity_helpers.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/python/fatcat_web/entity_helpers.py b/python/fatcat_web/entity_helpers.py
new file mode 100644
index 00000000..28ed3045
--- /dev/null
+++ b/python/fatcat_web/entity_helpers.py
@@ -0,0 +1,41 @@
+
+from flask import abort
+from fatcat_client.rest import ApiException
+from fatcat_tools.transforms import *
+from fatcat_web import api
+
+
+def generic_get_entity(entity_type, ident):
+ try:
+ if entity_type == 'container':
+ entity = api.get_container(ident)
+ if entity.state == "active":
+ entity.es = container_to_elasticsearch(entity, force_bool=False)
+ return entity
+ else:
+ raise NotImplementedError
+ except ApiException as ae:
+ abort(ae.status)
+
+def generic_get_editgroup_entity(editgroup, entity_type, ident):
+ if entity_type == 'container':
+ edits = editgroup.edits.containers
+ else:
+ raise NotImplementedError
+ for e in edits:
+ if e.ident == ident:
+ revision_id = e.revision
+ edit = e
+ break
+ if not revision_id:
+ # couldn't find relevent edit in this editgroup
+ abort(404)
+ try:
+ if entity_type == 'container':
+ entity = api.get_container_revision(revision_id)
+ else:
+ raise NotImplementedError
+ except ApiException as ae:
+ abort(ae.status)
+ entity.ident = ident
+ return entity, edit