From 747978f92bc30a779515118c2b59dd64becc50a5 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Mon, 17 Jun 2019 14:44:56 -0400 Subject: [PATCH] Fix pagination urls --- atst/filters.py | 13 +++++++++++++ templates/components/pagination.html | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/atst/filters.py b/atst/filters.py index b13eb04f..48b8166c 100644 --- a/atst/filters.py +++ b/atst/filters.py @@ -4,6 +4,7 @@ from atst.utils.localization import translate from flask import render_template from jinja2 import contextfilter from jinja2.exceptions import TemplateNotFound +from urllib.parse import urlparse, urlunparse, parse_qs, urlencode def iconSvg(name): @@ -19,6 +20,17 @@ def dollars(value): return "${:,.2f}".format(numberValue) +def with_extra_params(url, **params): + """ + Takes an existing url and safely appends additional query parms. + """ + parsed_url = urlparse(url) + parsed_params = parse_qs(parsed_url.query) + new_params = {**parsed_params, **params} + parsed_url = parsed_url._replace(query=urlencode(new_params)) + return urlunparse(parsed_url) + + def usPhone(number): if not number: return "" @@ -63,6 +75,7 @@ def register_filters(app): app.jinja_env.filters["dateFromString"] = dateFromString app.jinja_env.filters["pageWindow"] = pageWindow app.jinja_env.filters["renderAuditEvent"] = renderAuditEvent + app.jinja_env.filters["withExtraParams"] = with_extra_params @contextfilter def translateWithoutCache(context, *kwargs): diff --git a/templates/components/pagination.html b/templates/components/pagination.html index e85904ca..7c9bfad1 100644 --- a/templates/components/pagination.html +++ b/templates/components/pagination.html @@ -11,7 +11,7 @@ {% set button_class = button_class + "usa-button-secondary" %} {% endif %} - {{ label }} + {{ label }} {%- endmacro %} {% macro Pagination(pagination, url) -%}