diff --git a/.gitignore b/.gitignore index 0caff163b19855cfdae285434367f8d4bf34eb47..a67cfe0a3ddbe4546495b4ef5ec93b187224b0fc 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 0351931e7ad79f47397a23800eaf1e38cd6a1382..64379153013478f4f7cad240e8fbe06e79dd4b89 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 0000000000000000000000000000000000000000..2377e6786ef643d1eb49282d3b7ed938107f8b5b --- /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 7e6905dc975401069616559a267bddb516b5c3d1..88af4d6a1709a6ea83064298128e842109ba1875 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>