Handle HTTPError from API and routing errors from flask.

Removed catching the HTTPError where applicable.
This commit is contained in:
Rebecca Law
2016-03-10 14:56:47 +00:00
parent f6d98b63ea
commit 735ca07dee
5 changed files with 28 additions and 14 deletions

View File

@@ -7,10 +7,11 @@ from flask._compat import string_types
from flask_login import LoginManager
from flask_wtf import CsrfProtect
from notifications_python_client import HTTPError
from werkzeug.exceptions import abort
from pygments import highlight
from pygments.lexers import JavascriptLexer
from pygments.formatters import HtmlFormatter
from werkzeug.exceptions import abort
from app.notify_client.api_client import NotificationsAdminAPIClient
from app.notify_client.api_key_api_client import ApiKeyApiClient
from app.notify_client.user_api_client import UserApiClient
@@ -177,10 +178,33 @@ def useful_headers_after_request(response):
def register_errorhandlers(application):
def _error_response(error_code):
resp = make_response(render_template("error/{0}.html".format(error_code)), error_code)
return useful_headers_after_request(resp)
@application.errorhandler(HTTPError)
def render_http_error(error):
error_code = getattr(error, 'code', 500)
if error_code not in [401, 404, 403, 500]:
error_code = 500
resp = make_response(render_template("error/{0}.html".format(error_code)), error_code)
return useful_headers_after_request(resp)
return _error_response(error_code)
@application.errorhandler(400)
def handle_bad_request(error):
return _error_response(404)
@application.errorhandler(404)
def handle_not_found(error):
return _error_response(404)
@application.errorhandler(403)
def handle_not_authorized(error):
return _error_response(403)
@application.errorhandler(401)
def handle_no_permissions(error):
return _error_response(401)
@application.errorhandler(Exception)
def handle_bad_request(error):
return _error_response(500)

View File

@@ -19,10 +19,7 @@ def get_service_templates(service_id):
def get_service_template_or_404(service_id, template_id):
try:
return notifications_api_client.get_service_template(service_id, template_id)
except HTTPError as e:
abort(e.status_code)
return notifications_api_client.get_service_template(service_id, template_id)
def delete_service_template(service_id, template_id):

View File

@@ -1,11 +1,6 @@
from datetime import datetime
from notifications_python_client import HTTPError
from sqlalchemy.orm import load_only
from app import login_manager
from app.main.encryption import hashpw
from app import user_api_client
#

View File

@@ -9,7 +9,6 @@ from flask_login import login_required
from app.main import main
from app.main.dao.services_dao import get_service_by_id
from app.main.dao import templates_dao
from notifications_python_client.errors import HTTPError
from app import job_api_client

View File

@@ -8,7 +8,6 @@ from flask import (
jsonify
)
from flask_login import login_required
from notifications_python_client.errors import HTTPError
from utils.template import Template
from app import job_api_client, notification_api_client