From de1f14ebf817d17b88e4be60b81a9a169dc0a9fb Mon Sep 17 00:00:00 2001 From: Ethan Clay <Ethan2.Clay@live.uwe.ac.uk> Date: Fri, 21 Mar 2025 10:33:42 +0000 Subject: [PATCH] Made changes to error pages, make errors more useful --- app/__init__.py | 6 ++++++ app/errors/routes.py | 10 ++++++---- app/templates/_results.html | 2 +- app/templates/errors/error.html | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 28d94df..eead606 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -167,6 +167,8 @@ def create_app(config_class=Config): return "", 404 else: app.logger.error(f"Page not found: {request.path}") + session['error_header'] = 'Unable to find requested page' + session['generic_error_message'] = f"Page not found: {request.path}" session['error_message'] = f"Page not found: {request.path}" return redirect(url_for('errors.error')) @@ -174,14 +176,18 @@ def create_app(config_class=Config): @app.errorhandler(Exception) def handle_exception(e): app.logger.error(f"Unhandled exception: {e}") + session['error_header'] = 'Something unexpected happened' session['error_message'] = str(e) + session['generic_error_message'] = 'Something went wrong, if this continues please contact support' return redirect(url_for('errors.error')) @app.errorhandler(403) def handle_exception(e): app.logger.debug(f"Unauthorized: {e}") + session['error_header'] = "You don't have permission to view this resource" session['error_message'] = str(e) + session['generic_error_message'] = f"You don't have permission to view the {request.endpoint} endpoint. If you believe this is in error contact support." return redirect(url_for('errors.no_permission')) diff --git a/app/errors/routes.py b/app/errors/routes.py index 5b744f6..321328a 100644 --- a/app/errors/routes.py +++ b/app/errors/routes.py @@ -4,16 +4,18 @@ from app.logger import error_logger @bp.route('/error') def error(): - error_message = 'Something went wrong, if this continues please contact support.' + error_header = session['error_header'] + error_message = session['generic_error_message'] user_id = 'User Not Logged In' if g.is_admin: # Only display error if admin is logged in, otherwise throw generic error to user error_message = session.get('error_message') if '_user_id' in session: user_id = session['_user_id'] error_logger.error(f"Error: {error_message} \nAction performed by UserID: {user_id}") - return render_template("errors/error.html", error_message=error_message) + return render_template("errors/error.html", error_header=error_header, error_message=error_message) @bp.route('/no_permission') def no_permission(): - error_message = 'You do not have the required permission to view this page.' - return render_template("errors/error.html", error_message=error_message) + error_header = session['error_header'] + error_message = session['generic_error_message'] + return render_template("errors/error.html", error_header=error_header, error_message=error_message) diff --git a/app/templates/_results.html b/app/templates/_results.html index 980e47f..01ae38b 100644 --- a/app/templates/_results.html +++ b/app/templates/_results.html @@ -20,7 +20,7 @@ <td><img src="{{ item.main_image_url }}" class="main-image" alt="Main Image" onclick="event.stopPropagation(); showModal({{ item.image_urls | safe }});"></td> <td>{{ item.depart_location }}</td> <td> - {% if discount > 0 %} + {% if discount > 0 %} <span style="text-decoration: line-through;">£ {{ item.original_cost }}</span> <span>£ {{ item.discounted_cost }}</span> {% else %} diff --git a/app/templates/errors/error.html b/app/templates/errors/error.html index 94f3b68..348d2b1 100644 --- a/app/templates/errors/error.html +++ b/app/templates/errors/error.html @@ -6,7 +6,7 @@ <link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon"> </head> <div class="quandary-div"> - <h1>Something went wrong</h1> + <h1>{{error_header}}</h1> <div class="container"> <div><span>{{ error_message }}</span></div> <div class="button_2" onclick="history.back()"> -- GitLab