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) -%}