|
|
@ -83,11 +83,10 @@ def generic_error_page(request: Request) -> dict: |
|
|
|
request.response.status_int = request.exception.status_int |
|
|
|
|
|
|
|
error = f"Error {request.exception.status_code} ({request.exception.title})" |
|
|
|
description = "" |
|
|
|
|
|
|
|
if isinstance(request.exception, HTTPForbidden): |
|
|
|
description = request.exception |
|
|
|
elif isinstance(request.exception, HTTPUnprocessableEntity) and isinstance( |
|
|
|
description = "You don't have access to this page" |
|
|
|
if isinstance(request.exception, HTTPUnprocessableEntity) and isinstance( |
|
|
|
request.exception.__context__, ValidationError |
|
|
|
): |
|
|
|
errors = errors_from_validationerror(request.exception.__context__) |
|
|
@ -95,14 +94,7 @@ def generic_error_page(request: Request) -> dict: |
|
|
|
else: |
|
|
|
description = request.exception.explanation |
|
|
|
|
|
|
|
# For debugging, add the exception details |
|
|
|
debug_info = { |
|
|
|
"message": str(request.exception), |
|
|
|
"type": str(type(request.exception)), |
|
|
|
"args": request.exception.args, |
|
|
|
} |
|
|
|
|
|
|
|
return {"error": error, "description": description, "debug_info": debug_info} |
|
|
|
return {"error": error, "description": description} |
|
|
|
|
|
|
|
|
|
|
|
@forbidden_view_config(xhr=False) |
|
|
@ -112,3 +104,4 @@ def logged_out_forbidden(request: Request) -> HTTPFound: |
|
|
|
login_url = request.route_url("login", _query={"from_url": forbidden_path}) |
|
|
|
|
|
|
|
return HTTPFound(location=login_url) |
|
|
|
|