mirror of
https://github.com/aljazceru/CTFd.git
synced 2026-02-01 12:24:31 +01:00
User pagination pages (#1464)
* Replace user facing pagination with Flask SQLAlchemy Pagination objects * Closes #1353 I think this is a big improvement but I feel like this is harder to create a theme construct around.
This commit is contained in:
@@ -21,24 +21,14 @@ teams = Blueprint("teams", __name__)
|
||||
@require_team_mode
|
||||
def listing():
|
||||
page = abs(request.args.get("page", 1, type=int))
|
||||
results_per_page = 50
|
||||
page_start = results_per_page * (page - 1)
|
||||
page_end = results_per_page * (page - 1) + results_per_page
|
||||
|
||||
# TODO: Should teams confirm emails?
|
||||
# if get_config('verify_emails'):
|
||||
# count = Teams.query.filter_by(verified=True, banned=False).count()
|
||||
# teams = Teams.query.filter_by(verified=True, banned=False).slice(page_start, page_end).all()
|
||||
# else:
|
||||
count = Teams.query.filter_by(hidden=False, banned=False).count()
|
||||
teams = (
|
||||
Teams.query.filter_by(hidden=False, banned=False)
|
||||
.slice(page_start, page_end)
|
||||
.all()
|
||||
.order_by(Teams.id.asc())
|
||||
.paginate(page=page, per_page=50)
|
||||
)
|
||||
|
||||
pages = int(count / results_per_page) + (count % results_per_page > 0)
|
||||
return render_template("teams/teams.html", teams=teams, pages=pages, curr_page=page)
|
||||
return render_template("teams/teams.html", teams=teams)
|
||||
|
||||
|
||||
@teams.route("/teams/join", methods=["GET", "POST"])
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for team in teams %}
|
||||
{% for team in teams.items %}
|
||||
<tr>
|
||||
<td>
|
||||
{% if scores_visible() %}
|
||||
@@ -70,23 +70,23 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% if pages > 1 %}
|
||||
{% if teams.pages > 1 %}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="text-center">Page
|
||||
<br>
|
||||
{% if curr_page != 1 %}
|
||||
<a href="{{ url_for('teams.listing', page=curr_page-1) }}">
|
||||
{% if teams.page != 1 %}
|
||||
<a href="{{ url_for('teams.listing', page=teams.page - 1) }}">
|
||||
<<<
|
||||
</a>
|
||||
{% endif %}
|
||||
<select class="page-select">
|
||||
{% for page in range(1, pages + 1) %}
|
||||
<option {% if curr_page == page %}selected{% endif %}>{{ page }}</option>
|
||||
{% for page in range(1, teams.pages + 1) %}
|
||||
<option {% if teams.page == page %}selected{% endif %}>{{ page }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{% if curr_page != pages %}
|
||||
<a href="{{ url_for('teams.listing', page=curr_page + 1) }}">
|
||||
{% if teams.next_num %}
|
||||
<a href="{{ url_for('teams.listing', page=teams.page + 1) }}">
|
||||
>>>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in users %}
|
||||
{% for user in users.items %}
|
||||
<tr>
|
||||
<td>
|
||||
{% if scores_visible() %}
|
||||
@@ -73,23 +73,23 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% if pages > 1 %}
|
||||
{% if users.pages > 1 %}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="text-center">Page
|
||||
<br>
|
||||
{% if curr_page != 1 %}
|
||||
<a href="{{ url_for('users.listing', page=curr_page - 1) }}">
|
||||
{% if users.page != 1 %}
|
||||
<a href="{{ url_for('users.listing', page=users.page - 1) }}">
|
||||
<<<
|
||||
</a>
|
||||
{% endif %}
|
||||
<select class="page-select">
|
||||
{% for page in range(1, pages + 1) %}
|
||||
<option {% if curr_page == page %}selected{% endif %}>{{ page }}</option>
|
||||
{% for page in range(1, users.pages + 1) %}
|
||||
<option {% if users.page == page %}selected{% endif %}>{{ page }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{% if curr_page != pages %}
|
||||
<a href="{{ url_for('users.listing', page=curr_page + 1) }}">
|
||||
{% if users.next_num %}
|
||||
<a href="{{ url_for('users.listing', page=users.page + 1) }}">
|
||||
>>>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
@@ -16,19 +16,14 @@ users = Blueprint("users", __name__)
|
||||
@check_account_visibility
|
||||
def listing():
|
||||
page = abs(request.args.get("page", 1, type=int))
|
||||
results_per_page = 50
|
||||
page_start = results_per_page * (page - 1)
|
||||
page_end = results_per_page * (page - 1) + results_per_page
|
||||
|
||||
count = Users.query.filter_by(banned=False, hidden=False).count()
|
||||
users = (
|
||||
Users.query.filter_by(banned=False, hidden=False)
|
||||
.slice(page_start, page_end)
|
||||
.all()
|
||||
.order_by(Users.id.asc())
|
||||
.paginate(page=page, per_page=10)
|
||||
)
|
||||
|
||||
pages = int(count / results_per_page) + (count % results_per_page > 0)
|
||||
return render_template("users/users.html", users=users, pages=pages, curr_page=page)
|
||||
return render_template("users/users.html", users=users)
|
||||
|
||||
|
||||
@users.route("/profile")
|
||||
|
||||
Reference in New Issue
Block a user