aboutsummaryrefslogtreecommitdiffhomepage
path: root/apioforum/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'apioforum/user.py')
-rw-r--r--apioforum/user.py28
1 files changed, 21 insertions, 7 deletions
diff --git a/apioforum/user.py b/apioforum/user.py
index bbdd060..1a884aa 100644
--- a/apioforum/user.py
+++ b/apioforum/user.py
@@ -1,4 +1,5 @@
# user pages
+POSTS_PER_PAGE = 20
from flask import (
Blueprint, render_template, abort, g, flash, redirect, url_for, request
@@ -6,22 +7,35 @@ from flask import (
from werkzeug.security import check_password_hash, generate_password_hash
from .db import get_db
+import math
bp = Blueprint("user", __name__, url_prefix="/user")
-
-
+
@bp.route("/<username>")
-def view_user(username):
+@bp.route("/<username>/page/<int:page>")
+def view_user(username, page=1):
+ if page < 1:
+ abort(400)
+
db = get_db()
user = db.execute("SELECT * FROM users WHERE username = ?;",(username,)).fetchone()
+
if user is None:
abort(404)
posts = db.execute("""
SELECT * FROM posts
WHERE author = ? AND deleted = 0
- ORDER BY created DESC
- LIMIT 25;""",(username,)).fetchall()
- return render_template("view_user.html", user=user, posts=posts)
+ ORDER BY created DESC
+ LIMIT ? OFFSET ?;""",(username,POSTS_PER_PAGE,(page-1)*POSTS_PER_PAGE,)).fetchall()
+ num_posts = db.execute("SELECT count(*) as count FROM posts WHERE author = ?;",(username,)).fetchone()['count']
+ max_pageno = math.ceil(num_posts/POSTS_PER_PAGE)
+ return render_template(
+ "view_user.html",
+ user=user,
+ posts=posts,
+ page=page,
+ max_pageno=max_pageno,
+ )
@bp.route("/<username>/edit", methods=["GET","POST"])
def edit_user(username):
@@ -59,4 +73,4 @@ def edit_user(username):
else:
return redirect(url_for("user.view_user",username=username))
- return render_template("user_settings.html",user=user)
+ return render_template("user_settings.html",user=user) \ No newline at end of file