mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-07 05:18:25 -04:00
Cache letter page count on send yourself test
Calculating the number of pages in a letter is quite slow. And the send yourself a test pages need to load _fast_. Since filling in placeholders is very unlikely to change the number of pages in the resultant letter, it’s pretty safe to cache that count, and makes the subsequent pages load a lot faster.
This commit is contained in:
@@ -162,6 +162,7 @@ def get_example_csv(service_id, template_id):
|
|||||||
@user_has_permissions('send_texts', 'send_emails', 'send_letters')
|
@user_has_permissions('send_texts', 'send_emails', 'send_letters')
|
||||||
def send_test(service_id, template_id):
|
def send_test(service_id, template_id):
|
||||||
session['send_test_values'] = dict()
|
session['send_test_values'] = dict()
|
||||||
|
session['send_test_letter_page_count'] = None
|
||||||
return redirect(url_for(
|
return redirect(url_for(
|
||||||
'.send_test_step',
|
'.send_test_step',
|
||||||
service_id=service_id,
|
service_id=service_id,
|
||||||
@@ -178,6 +179,9 @@ def send_test_step(service_id, template_id, step_index):
|
|||||||
|
|
||||||
template = service_api_client.get_service_template(service_id, template_id)['data']
|
template = service_api_client.get_service_template(service_id, template_id)['data']
|
||||||
|
|
||||||
|
if not session.get('send_test_letter_page_count'):
|
||||||
|
session['send_test_letter_page_count'] = get_page_count_for_letter(template)
|
||||||
|
|
||||||
template = get_template(
|
template = get_template(
|
||||||
template,
|
template,
|
||||||
current_service,
|
current_service,
|
||||||
@@ -189,7 +193,7 @@ def send_test_step(service_id, template_id, step_index):
|
|||||||
template_id=template_id,
|
template_id=template_id,
|
||||||
filetype='png',
|
filetype='png',
|
||||||
),
|
),
|
||||||
page_count=get_page_count_for_letter(template),
|
page_count=session['send_test_letter_page_count']
|
||||||
)
|
)
|
||||||
|
|
||||||
placeholders = fields_to_fill_in(template)
|
placeholders = fields_to_fill_in(template)
|
||||||
@@ -271,7 +275,6 @@ def send_test_preview(service_id, template_id, filetype):
|
|||||||
template_id=template_id,
|
template_id=template_id,
|
||||||
filetype='png',
|
filetype='png',
|
||||||
),
|
),
|
||||||
page_count=get_page_count_for_letter(template),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
template.values = get_normalised_send_test_values_from_session()
|
template.values = get_normalised_send_test_values_from_session()
|
||||||
|
|||||||
@@ -421,6 +421,30 @@ def test_send_test_sms_message_with_placeholders_shows_first_field(
|
|||||||
assert session['send_test_values']['phone number'] == '07700 900762'
|
assert session['send_test_values']['phone number'] == '07700 900762'
|
||||||
|
|
||||||
|
|
||||||
|
def test_send_test_letter_clears_previous_page_cache(
|
||||||
|
logged_in_platform_admin_client,
|
||||||
|
mocker,
|
||||||
|
service_one,
|
||||||
|
mock_login,
|
||||||
|
mock_get_service,
|
||||||
|
mock_get_service_letter_template,
|
||||||
|
fake_uuid,
|
||||||
|
):
|
||||||
|
|
||||||
|
with logged_in_platform_admin_client.session_transaction() as session:
|
||||||
|
session['send_test_letter_page_count'] = 'WRONG'
|
||||||
|
|
||||||
|
response = logged_in_platform_admin_client.get(url_for(
|
||||||
|
'main.send_test',
|
||||||
|
service_id=service_one['id'],
|
||||||
|
template_id=fake_uuid,
|
||||||
|
))
|
||||||
|
assert response.status_code == 302
|
||||||
|
|
||||||
|
with logged_in_platform_admin_client.session_transaction() as session:
|
||||||
|
assert session['send_test_letter_page_count'] is None
|
||||||
|
|
||||||
|
|
||||||
def test_send_test_populates_field_from_session(
|
def test_send_test_populates_field_from_session(
|
||||||
logged_in_client,
|
logged_in_client,
|
||||||
mocker,
|
mocker,
|
||||||
@@ -447,6 +471,30 @@ def test_send_test_populates_field_from_session(
|
|||||||
assert page.select('input')[0]['value'] == 'Jo'
|
assert page.select('input')[0]['value'] == 'Jo'
|
||||||
|
|
||||||
|
|
||||||
|
def test_send_test_caches_page_count(
|
||||||
|
logged_in_client,
|
||||||
|
mocker,
|
||||||
|
service_one,
|
||||||
|
mock_login,
|
||||||
|
mock_get_service,
|
||||||
|
mock_get_service_letter_template,
|
||||||
|
fake_uuid,
|
||||||
|
):
|
||||||
|
|
||||||
|
mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=99)
|
||||||
|
|
||||||
|
response = logged_in_client.get(
|
||||||
|
url_for(
|
||||||
|
'main.send_test',
|
||||||
|
service_id=service_one['id'],
|
||||||
|
template_id=fake_uuid,
|
||||||
|
),
|
||||||
|
follow_redirects=True,
|
||||||
|
)
|
||||||
|
with logged_in_client.session_transaction() as session:
|
||||||
|
assert session['send_test_letter_page_count'] == 99
|
||||||
|
|
||||||
|
|
||||||
def test_send_test_indicates_optional_address_columns(
|
def test_send_test_indicates_optional_address_columns(
|
||||||
logged_in_client,
|
logged_in_client,
|
||||||
mocker,
|
mocker,
|
||||||
|
|||||||
Reference in New Issue
Block a user