From 8de21bae9c7eebce2fab7b59f64e5585b0210bd7 Mon Sep 17 00:00:00 2001 From: Yaro Kasear Date: Wed, 25 Jun 2025 14:14:01 -0500 Subject: [PATCH] Refactor route ID handling; update inventory_item, user, and worklog_entry routes to accept non-integer IDs and improve error handling --- routes.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/routes.py b/routes.py index 29c196b..a6a8469 100644 --- a/routes.py +++ b/routes.py @@ -239,8 +239,13 @@ def inventory_index(): endpoint='inventory_index' ) -@main.route("/inventory_item/", methods=['GET', 'POST']) +@main.route("/inventory_item/", methods=['GET', 'POST']) def inventory_item(id): + try: + id = int(id) + except ValueError: + return render_template('error.html', title="Bad ID", message="ID must be an integer", endpoint='inventory_item', endpoint_args={'id': -1}) + inventory_query = db.session.query(Inventory) item = eager_load_inventory_relationships(inventory_query).filter(Inventory.id == id).first() brands = db.session.query(Brand).all() @@ -284,8 +289,13 @@ def list_users(): endpoint='list_users' ) -@main.route("/user/") +@main.route("/user/") def user(id): + try: + id = int(id) + except ValueError: + return render_template('error.html', title='Bad ID', message='ID must be an integer.', endpoint='user', endpoint_args={'id': -1}) + users_query = db.session.query(User).order_by(User.first_name, User.last_name) users = eager_load_user_relationships(users_query).all() user = next((u for u in users if u.id == id), None) @@ -343,8 +353,13 @@ def list_worklog(page=1): endpoint='list_worklog' ) -@main.route("/worklog/") +@main.route("/worklog/") def worklog_entry(id): + try: + id = int(id) + except ValueError: + return render_template('error.html', title='Bad ID', message='ID must be an integer.', endpoint='worklog_entry', endpoint_args={'id': -1}) + log = eager_load_worklog_relationships(db.session.query(WorkLog)).filter(WorkLog.id == id).first() user_query = db.session.query(User) users = eager_load_user_relationships(user_query).all()