diff options
-rw-r--r-- | app/blueprints/packages/packages.py | 7 | ||||
-rw-r--r-- | app/template_filters.py | 5 | ||||
-rw-r--r-- | app/templates/macros/pagination.html | 8 | ||||
-rw-r--r-- | app/templates/packages/list.html | 2 | ||||
-rw-r--r-- | app/utils.py | 7 |
5 files changed, 15 insertions, 14 deletions
diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index ed1518d..53bd3b0 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -80,17 +80,12 @@ 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, packages_count=query.total, \ - pagination=query, url_builder=url_builder) + pagination=query) def getReleases(package): diff --git a/app/template_filters.py b/app/template_filters.py index 7d21c09..14a10c6 100644 --- a/app/template_filters.py +++ b/app/template_filters.py @@ -1,15 +1,14 @@ from . import app -from .utils import abs_url_for +from .utils import abs_url_for, url_set_query from urllib.parse import urlparse @app.context_processor def inject_debug(): return dict(debug=app.debug) - @app.context_processor def inject_functions(): - return dict(abs_url_for=abs_url_for) + return dict(abs_url_for=abs_url_for, url_set_query=url_set_query) @app.template_filter() def throw(err): diff --git a/app/templates/macros/pagination.html b/app/templates/macros/pagination.html index 2ea0eb2..5e1cbdd 100644 --- a/app/templates/macros/pagination.html +++ b/app/templates/macros/pagination.html @@ -1,7 +1,7 @@ -{% macro render_pagination(pagination, url_builder) %} +{% macro render_pagination(pagination, url_set_query) %} <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 %} + {% set prev_url = url_set_query(page=pagination.prev_num) if pagination.has_prev %} + {% set next_url = url_set_query(page=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 %}>«</a> @@ -11,7 +11,7 @@ {% if page %} <li class="page-item {% if page == pagination.page %}active{% endif %}"> <a class="page-link" - href="{{ url_builder(page) }}"> + href="{{ url_set_query(page=page) }}"> {{ page }} </a> </li> diff --git a/app/templates/packages/list.html b/app/templates/packages/list.html index 8f3a595..da0d80c 100644 --- a/app/templates/packages/list.html +++ b/app/templates/packages/list.html @@ -25,7 +25,7 @@ {% from "macros/pagination.html" import render_pagination %} - {{ render_pagination(pagination, url_builder) }} + {{ render_pagination(pagination, url_set_query) }} {% if topics %} diff --git a/app/utils.py b/app/utils.py index 5960fa6..cc338b4 100644 --- a/app/utils.py +++ b/app/utils.py @@ -23,6 +23,8 @@ from . import app import random, string, os, imghdr from urllib.parse import urljoin +# These are given to Jinja in template_filters.py + def abs_url_for(path, **kwargs): scheme = "https" if app.config["BASE_URL"][:5] == "https" else "http" return url_for(path, _external=True, _scheme=scheme, **kwargs) @@ -30,6 +32,11 @@ def abs_url_for(path, **kwargs): def abs_url(path): return urljoin(app.config["BASE_URL"], path) +def url_set_query(**kwargs): + args = dict(request.args) + args.update(kwargs) + return url_for(request.endpoint, **args) + def get_int_or_abort(v, default=None): if v is None: return default |