diff --git a/atst/domain/exceptions.py b/atst/domain/exceptions.py index bad0d4b3..b141d0b3 100644 --- a/atst/domain/exceptions.py +++ b/atst/domain/exceptions.py @@ -34,3 +34,12 @@ class UnauthenticatedError(Exception): class UploadError(Exception): pass + + +class NoAccessError(Exception): + def __init__(self, resource_name): + self.resource_name = resource_name + + @property + def message(self): + return "Route for {} cannot be accessed".format(self.resource_name) diff --git a/atst/routes/errors.py b/atst/routes/errors.py index 6ab65f2e..279d6c8f 100644 --- a/atst/routes/errors.py +++ b/atst/routes/errors.py @@ -27,6 +27,7 @@ def make_error_pages(app): @app.errorhandler(exceptions.NotFoundError) @app.errorhandler(exceptions.UnauthorizedError) @app.errorhandler(PortfolioError) + @app.errorhandler(exceptions.NoAccessError) # pylint: disable=unused-variable def not_found(e): return handle_error(e) diff --git a/atst/routes/portfolios/task_orders.py b/atst/routes/portfolios/task_orders.py index 4efac824..86c07e2d 100644 --- a/atst/routes/portfolios/task_orders.py +++ b/atst/routes/portfolios/task_orders.py @@ -5,7 +5,7 @@ from flask import g, redirect, render_template, url_for, request as http_request from . import portfolios_bp from atst.database import db from atst.domain.task_orders import TaskOrders, DD254s -from atst.domain.exceptions import NotFoundError +from atst.domain.exceptions import NotFoundError, NoAccessError from atst.domain.portfolios import Portfolios from atst.domain.authz import Authorization from atst.forms.officers import EditTaskOrderOfficersForm @@ -93,7 +93,7 @@ def ko_review(portfolio_id, task_order_id): form=KOReviewForm(obj=task_order), ) else: - raise NotFoundError("task_order") + raise NoAccessError("task_order") @portfolios_bp.route(