From 92f869ce6b5cd9b432307a7795ec8367548592dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20M=C3=BCller?= Date: Sat, 4 Nov 2017 16:57:05 +0100 Subject: [PATCH] Store changes to tags in metadata DB --- schema.sql | 3 ++- soundboard.py | 27 +++++++++++++++++++++++---- templates/edit.html | 6 +++--- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/schema.sql b/schema.sql index 56c6cd4..92f2c6c 100644 --- a/schema.sql +++ b/schema.sql @@ -13,5 +13,6 @@ CREATE TABLE IF NOT EXISTS button_tags ( fk_tag INTEGER, fk_button INTEGER, FOREIGN KEY(fk_tag) REFERENCES tag(id), - FOREIGN KEY(fk_button) REFERENCES button(id) + FOREIGN KEY(fk_button) REFERENCES button(id), + PRIMARY KEY(fk_tag, fk_button) ); diff --git a/soundboard.py b/soundboard.py index 31c1d0f..83ed7d5 100644 --- a/soundboard.py +++ b/soundboard.py @@ -90,12 +90,9 @@ def index(sound=None, text=None, video=None): @app.route("/edit/", methods=["GET", "POST"]) def edit(sound): - if request.method == "POST": - # TODO: Store changes - return redirect("/edit") - tags = queryDB("""\ SELECT + tag.id, tag.name, checked.id IS NOT NULL AS checked FROM @@ -120,4 +117,26 @@ LEFT OUTER JOIN ( ) AS checked ON tag.id = checked.id""", (sound,)) + if request.method == "POST": + if not request.form.get("cancel"): + buttonId = queryDB("SELECT id FROM button WHERE file = ?", (sound,), True) + + if buttonId is None: + queryDB("INSERT INTO button (file) VALUES (?)", (sound,)) + getDB().commit() + + buttonId = queryDB("SELECT id FROM button WHERE file = ?", (sound,), True) + + for tag in tags: + checkbox = 1 if request.form.get("cb-{}".format(tag["name"])) else 0 + + if tag["checked"] < checkbox: + queryDB("INSERT OR REPLACE INTO button_tags (fk_button, fk_tag) VALUES (?, ?)", (buttonId[0], tag["id"])) + getDB().commit() + elif tag["checked"] > checkbox: + queryDB("DELETE FROM button_tags WHERE fk_button = ? AND fk_tag = ?", (buttonId[0], tag["id"])) + getDB().commit() + + return redirect("/edit") + return render_template("edit.html", sound=sound, tags=tags) diff --git a/templates/edit.html b/templates/edit.html index 2c4ceb7..62f4a45 100644 --- a/templates/edit.html +++ b/templates/edit.html @@ -8,11 +8,11 @@ - - + + {% endblock %}