diff --git a/files/routes/users.py b/files/routes/users.py index 29fc92ec0..993635680 100644 --- a/files/routes/users.py +++ b/files/routes/users.py @@ -718,28 +718,6 @@ def user_id(id): def redditor_moment_redirect(v:User, username:str): return redirect(f"/@{username}") -@app.get("/@/followers") -@limiter.limit(DEFAULT_RATELIMIT) -@limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID) -@auth_required -def followers(v:User, username:str): - u = get_user(username, v=v) - - if not (v.id == u.id or v.admin_level >= PERMS['USER_FOLLOWS_VISIBLE']): - abort(403) - - page = get_page() - - users = g.db.query(Follow, User).join(Follow, Follow.target_id == u.id) \ - .filter(Follow.user_id == User.id) \ - .order_by(Follow.created_utc.desc()) \ - .offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE + 1).all() - - next_exists = (len(users) > PAGE_SIZE) - users = users[:PAGE_SIZE] - - return render_template("userpage/followers.html", v=v, u=u, users=users, page=page, next_exists=next_exists) - @app.get("/@/blockers") @limiter.limit(DEFAULT_RATELIMIT) @limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID) @@ -759,6 +737,28 @@ def blockers(v:User, username:str): return render_template("userpage/blockers.html", v=v, u=u, users=users, page=page, next_exists=next_exists) +@app.get("/@/followers") +@limiter.limit(DEFAULT_RATELIMIT) +@limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID) +@auth_required +def followers(v:User, username:str): + u = get_user(username, v=v) + + if not (v.id == u.id or v.admin_level >= PERMS['USER_FOLLOWS_VISIBLE']): + abort(403) + + page = get_page() + + users = g.db.query(Follow, User).join(Follow, Follow.target_id == u.id) \ + .filter(Follow.user_id == User.id) + + next_exists = users.count() + + users = users.order_by(Follow.created_utc.desc()) \ + .offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE).all() + + return render_template("userpage/followers.html", v=v, u=u, users=users, page=page, next_exists=next_exists) + @app.get("/@/following") @limiter.limit(DEFAULT_RATELIMIT) @limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID) @@ -771,12 +771,12 @@ def following(v:User, username:str): page = get_page() users = g.db.query(User).join(Follow, Follow.user_id == u.id) \ - .filter(Follow.target_id == User.id) \ - .order_by(Follow.created_utc.desc()) \ - .offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE + 1).all() + .filter(Follow.target_id == User.id) - next_exists = (len(users) > PAGE_SIZE) - users = users[:PAGE_SIZE] + next_exists = users.count() + + users = users.order_by(Follow.created_utc.desc()) \ + .offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE).all() return render_template("userpage/following.html", v=v, u=u, users=users, page=page, next_exists=next_exists) diff --git a/files/templates/userpage/followers.html b/files/templates/userpage/followers.html index 320eb3723..f9714701b 100644 --- a/files/templates/userpage/followers.html +++ b/files/templates/userpage/followers.html @@ -30,22 +30,5 @@ {% endblock %} {% block pagenav %} - +{% include "pagination.html" %} {% endblock %} diff --git a/files/templates/userpage/following.html b/files/templates/userpage/following.html index 3838a0678..6b8fcf859 100644 --- a/files/templates/userpage/following.html +++ b/files/templates/userpage/following.html @@ -28,22 +28,5 @@ {% endblock %} {% block pagenav %} - +{% include "pagination.html" %} {% endblock %}