diff --git a/app/__init__.py b/app/__init__.py index 05e825a6b..035bb2a9b 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -30,7 +30,7 @@ from notifications_python_client.errors import HTTPError from notifications_utils import logging, request_id, formatters from notifications_utils.clients.statsd.statsd_client import StatsdClient from notifications_utils.recipients import validate_phone_number, InvalidPhoneError -from notifications_utils.field import escape_html +from notifications_utils.formatters import formatted_list from pygments import highlight from pygments.formatters.html import HtmlFormatter from pygments.lexers.javascript import JavascriptLexer @@ -359,33 +359,6 @@ def format_notification_status_as_url(status): }.get(status) -def formatted_list( - items, - conjunction='and', - before_each='‘', - after_each='’', - separator=', ', - prefix='', - prefix_plural='' -): - if prefix: - prefix += ' ' - if prefix_plural: - prefix_plural += ' ' - - items = list(map(escape_html, items)) - if len(items) == 1: - return Markup('{prefix}{before_each}{items[0]}{after_each}'.format(**locals())) - elif items: - formatted_items = ['{}{}{}'.format(before_each, item, after_each) for item in items] - - first_items = separator.join(formatted_items[:-1]) - last_item = formatted_items[-1] - return Markup(( - '{prefix_plural}{first_items} {conjunction} {last_item}' - ).format(**locals())) - - def nl2br(value): return formatters.nl2br(value) if value else '' diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 5ea2e41c9..5b0e4e7e3 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -15,7 +15,7 @@ from flask_login import login_required, current_user from flask_weasyprint import HTML, render_pdf from dateutil.parser import parse -from notifications_utils.field import escape_html +from notifications_utils.formatters import escape_html from notifications_utils.template import LetterPreviewTemplate from notifications_utils.recipients import first_column_headings from notifications_python_client.errors import HTTPError diff --git a/tests/app/test_jinja_filters.py b/tests/app/test_jinja_filters.py deleted file mode 100644 index 39e337761..000000000 --- a/tests/app/test_jinja_filters.py +++ /dev/null @@ -1,23 +0,0 @@ -import pytest - -from flask import Markup -from app import formatted_list - - -@pytest.mark.parametrize('items, kwargs, expected_output', [ - ([1], {}, '‘1’'), - ([1, 2], {}, '‘1’ and ‘2’'), - ([1, 2, 3], {}, '‘1’, ‘2’ and ‘3’'), - ([1, 2, 3], {'prefix': 'foo', 'prefix_plural': 'bar'}, 'bar ‘1’, ‘2’ and ‘3’'), - ([1], {'prefix': 'foo', 'prefix_plural': 'bar'}, 'foo ‘1’'), - ([1, 2, 3], {'before_each': 'a', 'after_each': 'b'}, 'a1b, a2b and a3b'), - ([1, 2, 3], {'conjunction': 'foo'}, '‘1’, ‘2’ foo ‘3’'), - (['&'], {'before_each': '', 'after_each': ''}, '&'), - ([1, 2, 3], {'before_each': '', 'after_each': ''}, '1, 2 and 3'), -]) -def test_formatted_list(items, kwargs, expected_output): - assert formatted_list(items, **kwargs) == expected_output - - -def test_formatted_list_returns_markup(): - assert isinstance(formatted_list([0]), Markup)