diff options
author | ubq323 <ubq323> | 2021-06-15 23:01:06 +0000 |
---|---|---|
committer | ubq323 <ubq323> | 2021-06-15 23:01:06 +0000 |
commit | 2ed3c6588c6463e28a1f7e58a396f2cb590327cd (patch) | |
tree | db8ce44dbe96b20cd17f3a0d79f55c2df3615ea5 | |
parent | f2fb2736afac2326a8ed16d702a9a6a2d10101d0 (diff) |
allow changing tags on the configure thread page
-rw-r--r-- | apioforum/templates/config_thread.html | 21 | ||||
-rw-r--r-- | apioforum/thread.py | 17 |
2 files changed, 35 insertions, 3 deletions
diff --git a/apioforum/templates/config_thread.html b/apioforum/templates/config_thread.html index b0dd5f0..973fbf5 100644 --- a/apioforum/templates/config_thread.html +++ b/apioforum/templates/config_thread.html @@ -1,13 +1,30 @@ {% extends 'base.html' %} +{% from 'common.html' import tag %} {% block header %}<h1>{% block title %}configure thread '{{thread.title}}'{% endblock %}</h1>{% endblock %} {% block content %} <form method="post"> +<fieldset> +<legend>title</legend> <p>if you want to change the title of this thread, make sure you check the "change title?" box.</p> <label for="do_title">change title?</label> -<input type="checkbox" name="do_title"><br> +<input type="checkbox" id="do_title" name="do_title"><br> <label for="title">thread title</label> <input type="text" id="title" name="title" value="{{thread.title}}"> -<br> +</fieldset> +<fieldset> +<legend>tags</legend> +<p>if you want to change the tags on this thread, make sure you check the "change tags?" box.</p> +<label for="do_chtags">change tags?</label> +<input type="checkbox" name="do_chtags" id="do_chtags"><br> +<ul> + {% for the_tag in avail_tags %} + <li> + <input type="checkbox" id="tag_{{the_tag.id}}" name="tag_{{the_tag.id}}" {%- if the_tag.id in thread_tags %} checked{% endif %}> + <label for="tag_{{the_tag.id}}">#{{the_tag.id}} {{tag(the_tag)}}</label> + </li> + {% endfor %} +</ul> +</fieldset> <p>confirm changes?</p> <input type="submit" value="confirm"> <a href="{{url_for('thread.view_thread',thread_id=thread.id)}}">cancel</a> diff --git a/apioforum/thread.py b/apioforum/thread.py index e881a69..fd196c5 100644 --- a/apioforum/thread.py +++ b/apioforum/thread.py @@ -113,6 +113,8 @@ def edit_post(post_id): def config_thread(thread_id): db = get_db() thread = db.execute("select * from threads where id = ?",(thread_id,)).fetchone() + thread_tags = [r['tag'] for r in db.execute("select tag from thread_tags where thread = ?",(thread_id,)).fetchall()] + avail_tags = db.execute("select * from tags order by id").fetchall() err = None if g.user is None: err = "you need to be logged in to do that" @@ -133,6 +135,19 @@ def config_thread(thread_id): db.execute("update threads set title = ? where id = ?;",(title,thread_id)) flash("title updated successfully") db.commit() + if 'do_chtags' in request.form: + wanted_tags = [] + for tagid in range(1,len(avail_tags)+1): + current = tagid in thread_tags + wanted = f'tag_{tagid}' in request.form + print(tagid, current, wanted) + if wanted and not current: + db.execute("insert into thread_tags (thread, tag) values (?,?)",(thread_id,tagid)) + flash(f"added tag {tagid}") + elif current and not wanted: + db.execute("delete from thread_tags where thread = ? and tag = ?",(thread_id,tagid)) + flash(f"removed tag {tagid}") + db.commit() if len(err) > 0: for e in err: @@ -141,5 +156,5 @@ def config_thread(thread_id): return redirect(url_for("thread.view_thread",thread_id=thread_id)) - return render_template("config_thread.html", thread=thread) + return render_template("config_thread.html", thread=thread,thread_tags=thread_tags,avail_tags=avail_tags) |