diff options
author | Martin Czygan <martin@archive.org> | 2020-03-26 22:38:14 +0000 |
---|---|---|
committer | Martin Czygan <martin@archive.org> | 2020-03-26 22:38:14 +0000 |
commit | 5c4f5114b4dfeb7a5deca20d460c9fc5759a922a (patch) | |
tree | e0e4d29408214bcd81a12bdc1f9f9a8706944458 | |
parent | ea241c0718407285774bff85e4b3b99aed0b9186 (diff) | |
parent | b9657b39f4061e4cf870fa253c5665ab5ad60cc6 (diff) | |
download | fatcat-5c4f5114b4dfeb7a5deca20d460c9fc5759a922a.tar.gz fatcat-5c4f5114b4dfeb7a5deca20d460c9fc5759a922a.zip |
Merge branch 'bnewbold-400-bad-revisions' into 'master'
catch ApiValueError in some generic API calls
See merge request webgroup/fatcat!35
-rw-r--r-- | python/fatcat_web/entity_helpers.py | 14 | ||||
-rw-r--r-- | python/tests/web_entity_views.py | 2 |
2 files changed, 14 insertions, 2 deletions
diff --git a/python/fatcat_web/entity_helpers.py b/python/fatcat_web/entity_helpers.py index 009f6160..b04be55c 100644 --- a/python/fatcat_web/entity_helpers.py +++ b/python/fatcat_web/entity_helpers.py @@ -1,6 +1,6 @@ from flask import abort -from fatcat_openapi_client.rest import ApiException +from fatcat_openapi_client.rest import ApiException, ApiValueError from fatcat_tools.transforms import * from fatcat_web import app, api from fatcat_web.search import get_elastic_container_stats, get_elastic_container_random_releases @@ -123,6 +123,8 @@ def generic_get_entity(entity_type, ident): raise NotImplementedError except ApiException as ae: abort(ae.status) + except ApiValueError: + abort(400) def generic_get_entity_revision(entity_type, revision_id): try: @@ -144,6 +146,8 @@ def generic_get_entity_revision(entity_type, revision_id): raise NotImplementedError except ApiException as ae: abort(ae.status) + except ApiValueError: + abort(400) def generic_get_editgroup_entity(editgroup, entity_type, ident): if entity_type == 'container': @@ -172,6 +176,12 @@ def generic_get_editgroup_entity(editgroup, entity_type, ident): # couldn't find relevent edit in this editgroup abort(404) - entity = generic_get_entity_revision(entity_type, revision_id) + try: + entity = generic_get_entity_revision(entity_type, revision_id) + except ApiException as ae: + abort(ae.status) + except ApiValueError: + abort(400) + entity.ident = ident return entity, edit diff --git a/python/tests/web_entity_views.py b/python/tests/web_entity_views.py index 23a2b33b..e25c0296 100644 --- a/python/tests/web_entity_views.py +++ b/python/tests/web_entity_views.py @@ -42,6 +42,8 @@ def test_entity_basics(app): assert rv.status_code == 200 rv = app.get('/{}/rev/{}'.format(entity_type, revision)) assert rv.status_code == 200 + rv = app.get('/{}/rev/{}_something'.format(entity_type, revision)) + assert rv.status_code == 400 rv = app.get('/{}/rev/{}/metadata'.format(entity_type, revision)) assert rv.status_code == 200 print('/editgroup/aaaaaaaaaaaabo53aaaaaaaaaq/{}/{}'.format(entity_type, ident)) |