From 8594aae40385480a893379d6c8caaf2d9816d3ed Mon Sep 17 00:00:00 2001 From: Julian Rother <julian@cccv.de> Date: Sun, 23 Apr 2023 19:14:43 +0200 Subject: [PATCH] Add delete item button --- .gitignore | 1 + warehouse/__init__.py | 7 +++++-- warehouse/templates/item/delete.html | 12 ++++++++++++ warehouse/templates/item/view.html | 12 +++++++++++- 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 warehouse/templates/item/delete.html diff --git a/.gitignore b/.gitignore index 0caff16..a67cfe0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ __pycache__/ *.py[cod] *$py.class instance/ +*.swp diff --git a/warehouse/__init__.py b/warehouse/__init__.py index 0351931..6437915 100644 --- a/warehouse/__init__.py +++ b/warehouse/__init__.py @@ -166,9 +166,12 @@ def item_edit(item_id): db.session.commit() return redirect(url_for('item_view', item_id=item.id)) -@app.route('/item/<item_id>/', methods=['DELETE']) +@app.route('/item/<item_id>/delete', methods=['GET', 'POST']) def item_delete(item_id): - db.session.delete(Item.query.get_or_404(item_id)) + item = Item.query.get_or_404(item_id) + if request.method == 'GET': + return render_template('item/delete.html', item=item) + db.session.delete(item) db.session.commit() return redirect(url_for('item_list')) diff --git a/warehouse/templates/item/delete.html b/warehouse/templates/item/delete.html new file mode 100644 index 0000000..2377e67 --- /dev/null +++ b/warehouse/templates/item/delete.html @@ -0,0 +1,12 @@ +{% extends 'layout.html' %} + +{% block body %} +<form method="POST" class="form"> + <input type="hidden" name="csrf_token" value="{{ request.csrf_token }}"> + <p>Really delete item {{ item.name }} ({{ item.id }})?</p> + <div class="d-flex justify-content-end gap-1"> + <a href="{{ url_for('item_view', item_id=item.id) }}" class="btn btn-light">Cancel</a> + <button type="submit" class="btn btn-danger">Delete item</button> + </div> +</form> +{% endblock %} diff --git a/warehouse/templates/item/view.html b/warehouse/templates/item/view.html index 7e6905d..88af4d6 100644 --- a/warehouse/templates/item/view.html +++ b/warehouse/templates/item/view.html @@ -3,7 +3,16 @@ {% block body %} <div class="d-flex justify-content-end gap-1"> - <a href="{{ url_for('item_edit', item_id=item.id) }}" class="btn btn-primary">Edit</a> + <div class="btn-group"> + <a href="{{ url_for('item_edit', item_id=item.id) }}" class="btn btn-primary">Edit</a> + <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> + <span class="visually-hidden">Toggle Dropdown</span> + </button> + <ul class="dropdown-menu"> + <a href="{{ url_for('item_delete', item_id=item.id) }}" class="dropdown-item">Delete</a> + </ul> + </div> + <div class="btn-group"> <a href="{{ url_for('item_label', item_id=item.id) }}" class="btn btn-primary">Label</a> <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false"> @@ -13,6 +22,7 @@ <a href="{{ url_for('item_print_label', item_id=item.id) }}" class="dropdown-item">Print Label</a> </ul> </div> + <form method="POST" action="{{ url_for('item_upload_photo', item_id=item.id) }}" enctype="multipart/form-data"> <input type="hidden" name="csrf_token" value="{{ request.csrf_token }}"> <label> -- GitLab