aboutsummaryrefslogtreecommitdiffhomepage
path: root/apioforum/forum.py
diff options
context:
space:
mode:
Diffstat (limited to 'apioforum/forum.py')
-rw-r--r--apioforum/forum.py22
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()