make sure load_service_before_request handles 404s

if it 404s, because the service id doesn't exist, then it should die
gracefully (showing a 404 error page), rather than what it currently
does, which is die kicking and screaming with a 500
This commit is contained in:
Leo Hemsted
2017-10-30 16:59:24 +00:00
parent 8ec50971eb
commit 3128b5424d
2 changed files with 31 additions and 3 deletions

View File

@@ -404,10 +404,23 @@ def load_service_before_request():
if '/static/' in request.url:
_request_ctx_stack.top.service = None
return
service_id = request.view_args.get('service_id', session.get('service_id')) if request.view_args \
else session.get('service_id')
if _request_ctx_stack.top is not None:
_request_ctx_stack.top.service = service_api_client.get_service(service_id)['data'] if service_id else None
_request_ctx_stack.top.service = None
if request.view_args:
service_id = request.view_args.get('service_id', session.get('service_id'))
else:
service_id = session.get('service_id')
if service_id:
try:
_request_ctx_stack.top.service = service_api_client.get_service(service_id)['data']
except HTTPError as exc:
# if service id isn't real, then 404 rather than 500ing later because we expect service to be set
if exc.status_code == 404:
abort(404)
else:
raise
def save_service_after_request(response):