aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/blueprints/packages/packages.py14
-rw-r--r--app/templates/macros/pagination.html29
-rw-r--r--app/templates/packages/list.html20
3 files changed, 40 insertions, 23 deletions
diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py
index 0e1aeaa..0ee4656 100644
--- a/app/blueprints/packages/packages.py
+++ b/app/blueprints/packages/packages.py
@@ -65,11 +65,6 @@ def list_all():
search = request.args.get("q")
type_name = request.args.get("type")
- next_url = url_for("packages.list_all", type=type_name, q=search, page=query.next_num) \
- if query.has_next else None
- prev_url = url_for("packages.list_all", type=type_name, q=search, page=query.prev_num) \
- if query.has_prev else None
-
authors = []
if search:
authors = User.query \
@@ -83,12 +78,17 @@ def list_all():
qb.show_discarded = True
topics = qb.buildTopicQuery().all()
+ def url_builder(page):
+ args = dict(request.args)
+ args["page"] = page
+ return url_for("packages.list_all", **args)
+
tags = Tag.query.all()
return render_template("packages/list.html", \
title=title, packages=query.items, topics=topics, \
query=search, tags=tags, type=type_name, \
- authors = authors, \
- next_url=next_url, prev_url=prev_url, page=page, page_max=query.pages, packages_count=query.total)
+ authors=authors, packages_count=query.total, \
+ pagination=query, url_builder=url_builder)
def getReleases(package):
diff --git a/app/templates/macros/pagination.html b/app/templates/macros/pagination.html
new file mode 100644
index 0000000..acef4e7
--- /dev/null
+++ b/app/templates/macros/pagination.html
@@ -0,0 +1,29 @@
+{% macro render_pagination(pagination, url_builder) %}
+ <ul class="pagination mt-4">
+ {% set prev_url = url_builder(pagination.prev_num) if pagination.has_prev %}
+ {% set next_url = url_builder(pagination.next_num) if pagination.has_next %}
+
+ <li class="page-item {% if not prev_url %}disabled{% endif %}">
+ <a class="page-link" {% if prev_url %}href="{{ prev_url }}"{% endif %}>&laquo;</a>
+ </li>
+
+ {%- for page in pagination.iter_pages() %}
+ {% if page %}
+ <li class="page-item {% if page == pagination.page %}active{% endif %}">
+ <a class="page-link"
+ href="{{ url_builder(page) }}">
+ {{ page }}
+ </a>
+ </li>
+ {% else %}
+ <li class="page-item disabled">
+ &ellipsis;
+ </li>
+ {% endif %}
+ {%- endfor %}
+
+ <li class="page-item {% if not next_url %}disabled{% endif %}">
+ <a class="page-link" {% if next_url %}href="{{ next_url }}"{% endif %}>&raquo;</a>
+ </li>
+ </div>
+{% endmacro %}
diff --git a/app/templates/packages/list.html b/app/templates/packages/list.html
index 057fe22..8f3a595 100644
--- a/app/templates/packages/list.html
+++ b/app/templates/packages/list.html
@@ -23,22 +23,10 @@
{% from "macros/packagegridtile.html" import render_pkggrid %}
{{ render_pkggrid(packages) }}
- <ul class="pagination mt-4">
- <li class="page-item {% if not prev_url %}disabled{% endif %}">
- <a class="page-link" {% if prev_url %}href="{{ prev_url }}"{% endif %}>&laquo;</a>
- </li>
- {% for n in range(1, page_max+1) %}
- <li class="page-item {% if n == page %}active{% endif %}">
- <a class="page-link"
- href="{{ url_for('packages.list_all', type=type, q=query, page=n) }}">
- {{ n }}
- </a>
- </li>
- {% endfor %}
- <li class="page-item {% if not next_url %}disabled{% endif %}">
- <a class="page-link" {% if next_url %}href="{{ next_url }}"{% endif %}>&raquo;</a>
- </li>
- </ul>
+
+ {% from "macros/pagination.html" import render_pagination %}
+ {{ render_pagination(pagination, url_builder) }}
+
{% if topics %}
<h2 style="margin-top:2em;">More content from the forums</h2>