From 537dbeec2cfe08ae057744e041413e1e6c9f1d38 Mon Sep 17 00:00:00 2001 From: Julian Rother <julian@cccv.de> Date: Sat, 4 Mar 2023 03:55:22 +0100 Subject: [PATCH] Add basic item search --- warehouse/__init__.py | 10 +++++++++- warehouse/templates/item/list.html | 8 +++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/warehouse/__init__.py b/warehouse/__init__.py index 69a48b9..a12f9b4 100644 --- a/warehouse/__init__.py +++ b/warehouse/__init__.py @@ -99,7 +99,15 @@ def logout(): @app.route('/items/') def item_list(): - return render_template('item/list.html', page=Item.query.order_by('name').paginate(per_page=10)) + query = Item.query + if 'search' in request.values: + item = Item.query.get(request.values['search'].strip().upper()) + if item: + return redirect(url_for('item_view', item_id=item.id)) + keywords = request.values['search'].strip().split() + for keyword in keywords: + query = query.filter(db.or_(Item.name.contains(keyword), Item.description.contains(keyword))) + return render_template('item/list.html', page=query.order_by('name').paginate(per_page=10)) @app.route('/items/add', methods=['GET', 'POST']) def item_add(): diff --git a/warehouse/templates/item/list.html b/warehouse/templates/item/list.html index a2a63ab..4ebe051 100644 --- a/warehouse/templates/item/list.html +++ b/warehouse/templates/item/list.html @@ -1,7 +1,13 @@ {% extends 'layout.html' %} {% block body %} -<div class="btn-toolbar float-end" role="toolbar"> +<div class="d-flex justify-content-between gap-1"> + <form class="form-inline"> + <div class="input-group"> + <input type="text" class="form-control" name="search" value="{{ request.args.search }}" placeholder="Search" autofocus> + <button class="btn btn-outline-secondary" type="submit">Search</button> + </div> + </form> <a href="{{ url_for('item_add') }}" class="btn btn-primary">Add</a> </div> <table class="table table-hover"> -- GitLab