diff options
Diffstat (limited to 'apioforum/forum.py')
-rw-r--r-- | apioforum/forum.py | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/apioforum/forum.py b/apioforum/forum.py index badbd14..6d3f5cf 100644 --- a/apioforum/forum.py +++ b/apioforum/forum.py @@ -22,24 +22,35 @@ class Forum(DbWrapper): primary_key = "id" references = {"parent", Forum} + def has_permission(self, user, permission, login_required=True): + return(has_permission(self._key, str(user), permission, login_required)) + + def has_bureaucrat(self, user): + return(is_bureaucraft(self._key, str(user))) + + def get_avail_tags(self): + db = get_db() + return Tag.query_some(""" + WITH RECURSIVE fs AS + (SELECT * FROM forums WHERE id = ? + UNION ALL + SELECT forums.* FROM forums, fs WHERE fs.parent=forums.id) + SELECT * FROM tags + WHERE tags.forum in (SELECT id FROM fs) + ORDER BY id; + """,(self,)) + + def get_forum(self): + return self + +class Tag(DbWrapper): + table = "tags" + references = {"forum": Forum} @bp.route("/") def not_actual_index(): return redirect("/1") -def get_avail_tags(forum_id): - db = get_db() - tags = 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 tags - WHERE tags.forum in (SELECT id FROM fs) - ORDER BY id; - """,(forum_id,)).fetchall() - return tags - def forum_path(forum_id): db = get_db() ancestors = db.execute(""" |