diff --git a/warehouse/__init__.py b/warehouse/__init__.py index 69a48b9ab27efcaebae169f8228461df1b6224b5..a12f9b46e1b5801df59b2b4bf242b1e74d9fc2dc 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 a2a63ab0d34ef2b2484bba1ec8b3a060a7061862..4ebe051c4f6b1efd5ab299b0c70d4aa796c7c6ca 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">