diff options
Diffstat (limited to 'apioforum/forum.py')
-rw-r--r-- | apioforum/forum.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/apioforum/forum.py b/apioforum/forum.py index 988c9a5..289cc40 100644 --- a/apioforum/forum.py +++ b/apioforum/forum.py @@ -11,6 +11,7 @@ from .db import get_db from .mdrender import render from .roles import get_forum_roles,has_permission,is_bureaucrat,get_user_role, permissions as role_permissions from .permissions import is_admin +from . import read from sqlite3 import OperationalError import datetime import math @@ -89,6 +90,18 @@ def requires_bureaucrat(f): return f(forum, *args, **kwargs) return wrapper +def set_updated(forum_id): + db = get_db() + ancestors = db.execute(""" + WITH RECURSIVE fs AS + (SELECT * FROM forums WHERE id = ? + UNION ALL + SELECT forums.* FROM forums, fs WHERE fs.parent=forums.id) + SELECT * FROM fs; + """,(forum_id,)).fetchall() + for f in ancestors: + db.execute("UPDATE forums SET updated = current_timestamp WHERE id = ?;", (f['id'],)) + db.commit() @forum_route("",pagination=True) @requires_permission("p_view_forum", login_required=False) @@ -218,6 +231,13 @@ def view_forum(forum,page=1): WHERE role = 'bureaucrat' AND forum = ? """,(forum['id'],)).fetchall() bureaucrats = [b[0] for b in bureaucrats] + + + if g.user != None: + db.execute("DELETE FROM read WHERE user = ? AND forum = ?;", (g.user, forum['id'])) + db.execute("INSERT INTO read (user,forum,time) VALUES (?,?,current_timestamp);", (g.user, forum['id'])) + db.commit() + return render_template("view_forum.html", forum=forum, @@ -231,6 +251,7 @@ def view_forum(forum,page=1): page=page, current_sortby=sortby, tagfilter_tag=tagfilter_tag, + is_read=read.is_read, ) @forum_route("create_thread",methods=("GET","POST")) @@ -266,6 +287,7 @@ def create_thread(forum): (thread_id,g.user,content) ) db.commit() + set_updated(forum['id']) from . import webhooks thread = db.execute("select * from threads where id = ?",(thread_id,)).fetchone() |