diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/fatcat_web/entity_helpers.py | 41 | 
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 | 
