]> git.lizzy.rs Git - cheatdb.git/commitdiff
Add global url_set_query Jinja template function
authorrubenwardy <rw@rubenwardy.com>
Sun, 12 Jul 2020 16:15:30 +0000 (17:15 +0100)
committerrubenwardy <rw@rubenwardy.com>
Sun, 12 Jul 2020 16:15:30 +0000 (17:15 +0100)
app/blueprints/packages/packages.py
app/template_filters.py
app/templates/macros/pagination.html
app/templates/packages/list.html
app/utils.py

index ed1518d6818c407b726b2502328e066028209d82..53bd3b0b0b9fc6830b350e7c57bb006c9d3eff61 100644 (file)
@@ -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):
index 7d21c095d9f3d90e0fa9f52ebb25ad2eb507ec83..14a10c64c36af8aeac055a9a62428588763d8173 100644 (file)
@@ -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):
index 2ea0eb25a4f9786865beb4b0c9da8adb36b60bfb..5e1cbdd52aea3fb7686a6f1e517ecc8cf1528fd4 100644 (file)
@@ -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 %}>&laquo;</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>
index 8f3a595121f366bd798b11e1e2073eccaf36e736..da0d80cac29b171cf5acbc89445df380e0df6e28 100644 (file)
@@ -25,7 +25,7 @@
 
 
        {% from "macros/pagination.html" import render_pagination %}
-       {{ render_pagination(pagination, url_builder) }}
+       {{ render_pagination(pagination, url_set_query) }}
 
 
        {% if topics %}
index 5960fa66ca18a575de463f2c2138242ab7e8bb87..cc338b4b04ee37ea12fc4762477c51cec9df1f1a 100644 (file)
@@ -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