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;">&pound; {{ item.original_cost }}</span>
                     <span>&pound; {{ 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