forked from MarseyWorld/MarseyWorld
add pages to /followers /following /blockers and order them all by most recent first
parent
14828bd9f4
commit
a46b62db0b
|
@ -629,20 +629,36 @@ def followers(username, v):
|
||||||
if not (v.id == u.id or v.admin_level >= PERMS['USER_FOLLOWS_VISIBLE']):
|
if not (v.id == u.id or v.admin_level >= PERMS['USER_FOLLOWS_VISIBLE']):
|
||||||
abort(403)
|
abort(403)
|
||||||
|
|
||||||
|
try: page = int(request.values.get("page", 1))
|
||||||
|
except: page = 1
|
||||||
|
|
||||||
users = g.db.query(Follow, User).join(Follow, Follow.target_id == u.id) \
|
users = g.db.query(Follow, User).join(Follow, Follow.target_id == u.id) \
|
||||||
.filter(Follow.user_id == User.id) \
|
.filter(Follow.user_id == User.id) \
|
||||||
.order_by(Follow.created_utc).all()
|
.order_by(Follow.created_utc.desc()) \
|
||||||
return render_template("userpage/followers.html", v=v, u=u, users=users)
|
.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("/@<username>/blockers")
|
@app.get("/@<username>/blockers")
|
||||||
@auth_required
|
@auth_required
|
||||||
def blockers(username, v):
|
def blockers(username, v):
|
||||||
u = get_user(username, v=v, include_shadowbanned=False)
|
u = get_user(username, v=v, include_shadowbanned=False)
|
||||||
|
|
||||||
|
try: page = int(request.values.get("page", 1))
|
||||||
|
except: page = 1
|
||||||
|
|
||||||
users = g.db.query(UserBlock, User).join(UserBlock, UserBlock.target_id == u.id) \
|
users = g.db.query(UserBlock, User).join(UserBlock, UserBlock.target_id == u.id) \
|
||||||
.filter(UserBlock.user_id == User.id) \
|
.filter(UserBlock.user_id == User.id) \
|
||||||
.order_by(UserBlock.created_utc.desc()).all()
|
.order_by(UserBlock.created_utc.desc()) \
|
||||||
return render_template("userpage/blockers.html", v=v, u=u, users=users)
|
.offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE + 1).all()
|
||||||
|
|
||||||
|
next_exists = (len(users) > PAGE_SIZE)
|
||||||
|
users = users[:PAGE_SIZE]
|
||||||
|
|
||||||
|
return render_template("userpage/blockers.html", v=v, u=u, users=users, page=page, next_exists=next_exists)
|
||||||
|
|
||||||
@app.get("/@<username>/following")
|
@app.get("/@<username>/following")
|
||||||
@auth_required
|
@auth_required
|
||||||
|
@ -651,10 +667,18 @@ def following(username, v):
|
||||||
if not (v.id == u.id or v.admin_level >= PERMS['USER_FOLLOWS_VISIBLE']):
|
if not (v.id == u.id or v.admin_level >= PERMS['USER_FOLLOWS_VISIBLE']):
|
||||||
abort(403)
|
abort(403)
|
||||||
|
|
||||||
|
try: page = int(request.values.get("page", 1))
|
||||||
|
except: page = 1
|
||||||
|
|
||||||
users = g.db.query(User).join(Follow, Follow.user_id == u.id) \
|
users = g.db.query(User).join(Follow, Follow.user_id == u.id) \
|
||||||
.filter(Follow.target_id == User.id) \
|
.filter(Follow.target_id == User.id) \
|
||||||
.order_by(Follow.created_utc).all()
|
.order_by(Follow.created_utc.desc()) \
|
||||||
return render_template("userpage/following.html", v=v, u=u, users=users)
|
.offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE + 1).all()
|
||||||
|
|
||||||
|
next_exists = (len(users) > PAGE_SIZE)
|
||||||
|
users = users[:PAGE_SIZE]
|
||||||
|
|
||||||
|
return render_template("userpage/following.html", v=v, u=u, users=users, page=page, next_exists=next_exists)
|
||||||
|
|
||||||
@app.get("/@<username>/views")
|
@app.get("/@<username>/views")
|
||||||
@auth_required
|
@auth_required
|
||||||
|
@ -664,7 +688,7 @@ def visitors(username, v:User):
|
||||||
try: page = int(request.values.get("page", 1))
|
try: page = int(request.values.get("page", 1))
|
||||||
except: page = 1
|
except: page = 1
|
||||||
|
|
||||||
views = g.db.query(ViewerRelationship).filter_by(user_id=u.id).order_by(ViewerRelationship.last_view_utc.desc()).offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE + 1).limit(PAGE_SIZE + 1).all()
|
views = g.db.query(ViewerRelationship).filter_by(user_id=u.id).order_by(ViewerRelationship.last_view_utc.desc()).offset(PAGE_SIZE * (page - 1)).limit(PAGE_SIZE + 1).all()
|
||||||
|
|
||||||
next_exists = (len(views) > PAGE_SIZE)
|
next_exists = (len(views) > PAGE_SIZE)
|
||||||
views = views[:PAGE_SIZE]
|
views = views[:PAGE_SIZE]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends "default.html" %}
|
{% extends "default.html" %}
|
||||||
{% block pagetitle %}@{{u.username}}'s blockers{% endblock %}
|
{% block pagetitle %}@{{u.username}}'s blockers{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h5 class="mt-3">@{{u.username}}'s blockers</h5>
|
<h5 class="my-3">@{{u.username}}'s blockers</h5>
|
||||||
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
|
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
|
||||||
<thead class="bg-primary text-white">
|
<thead class="bg-primary text-white">
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -24,3 +24,24 @@
|
||||||
<script defer src="{{'js/blockers.js' | asset}}"></script>
|
<script defer src="{{'js/blockers.js' | asset}}"></script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pagenav %}
|
||||||
|
<nav aria-label="Page navigation">
|
||||||
|
<ul class="pagination pagination-sm py-3 pl-3 mb-0">
|
||||||
|
{% if page>1 %}
|
||||||
|
<li class="page-item">
|
||||||
|
<small><a class="page-link" href="?page={{page-1}}" tabindex="-1">Prev</a></small>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled"><span class="page-link">Prev</span></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if next_exists %}
|
||||||
|
<li class="page-item">
|
||||||
|
<small><a class="page-link" href="?page={{page+1}}">Next</a></small>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled"><span class="page-link">Next</span></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends "default.html" %}
|
{% extends "default.html" %}
|
||||||
{% block pagetitle %}@{{u.username}}'s followers{% endblock %}
|
{% block pagetitle %}@{{u.username}}'s followers{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h5 class="mt-2">@{{u.username}}'s followers</h5>
|
<h5 class="my-3">@{{u.username}}'s followers</h5>
|
||||||
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
|
<div class="overflow-x-auto mt-1"><table class="table table-striped mb-5">
|
||||||
<thead class="bg-primary text-white">
|
<thead class="bg-primary text-white">
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -30,3 +30,24 @@
|
||||||
<script defer src="{{'js/followers.js' | asset}}"></script>
|
<script defer src="{{'js/followers.js' | asset}}"></script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pagenav %}
|
||||||
|
<nav aria-label="Page navigation">
|
||||||
|
<ul class="pagination pagination-sm py-3 pl-3 mb-0">
|
||||||
|
{% if page>1 %}
|
||||||
|
<li class="page-item">
|
||||||
|
<small><a class="page-link" href="?page={{page-1}}" tabindex="-1">Prev</a></small>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled"><span class="page-link">Prev</span></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if next_exists %}
|
||||||
|
<li class="page-item">
|
||||||
|
<small><a class="page-link" href="?page={{page+1}}">Next</a></small>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled"><span class="page-link">Next</span></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends "default.html" %}
|
{% extends "default.html" %}
|
||||||
{% block pagetitle %}Users followed by @{{u.username}}{% endblock %}
|
{% block pagetitle %}Users followed by @{{u.username}}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h5 class="mt-3 mb-1">Users followed by @{{u.username}}</h5>
|
<h5 class="my-3">Users followed by @{{u.username}}</h5>
|
||||||
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
<div class="overflow-x-auto"><table class="table table-striped mb-5">
|
||||||
<thead class="bg-primary text-white">
|
<thead class="bg-primary text-white">
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -28,3 +28,24 @@
|
||||||
<script defer src="{{'js/following.js' | asset}}"></script>
|
<script defer src="{{'js/following.js' | asset}}"></script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pagenav %}
|
||||||
|
<nav aria-label="Page navigation">
|
||||||
|
<ul class="pagination pagination-sm py-3 pl-3 mb-0">
|
||||||
|
{% if page>1 %}
|
||||||
|
<li class="page-item">
|
||||||
|
<small><a class="page-link" href="?page={{page-1}}" tabindex="-1">Prev</a></small>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled"><span class="page-link">Prev</span></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if next_exists %}
|
||||||
|
<li class="page-item">
|
||||||
|
<small><a class="page-link" href="?page={{page+1}}">Next</a></small>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled"><span class="page-link">Next</span></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -13,6 +13,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends "default.html" %}
|
{% extends "default.html" %}
|
||||||
{% block pagetitle %}{{name2}}{% endblock %}
|
{% block pagetitle %}{{name2}}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h3 class="mt-3" style="text-align: center">{{name2}}</h3>
|
<h3 class="my-3" style="text-align: center">{{name2}}</h3>
|
||||||
<h5 class="font-weight-bold text-center mt-3">Total: {{total}}</h5>
|
<h5 class="font-weight-bold text-center mt-3">Total: {{total}}</h5>
|
||||||
<div class="mt-1 overflow-x-auto"><table class="table table-striped mb-5">
|
<div class="mt-1 overflow-x-auto"><table class="table table-striped mb-5">
|
||||||
<thead class="bg-primary text-white">
|
<thead class="bg-primary text-white">
|
||||||
|
|
Loading…
Reference in New Issue