mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-02 23:47:42 -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')
|
||||
def send_test(service_id, template_id):
|
||||
session['send_test_values'] = dict()
|
||||
session['send_test_letter_page_count'] = None
|
||||
return redirect(url_for(
|
||||
'.send_test_step',
|
||||
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']
|
||||
|
||||
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,
|
||||
current_service,
|
||||
@@ -189,7 +193,7 @@ def send_test_step(service_id, template_id, step_index):
|
||||
template_id=template_id,
|
||||
filetype='png',
|
||||
),
|
||||
page_count=get_page_count_for_letter(template),
|
||||
page_count=session['send_test_letter_page_count']
|
||||
)
|
||||
|
||||
placeholders = fields_to_fill_in(template)
|
||||
@@ -271,7 +275,6 @@ def send_test_preview(service_id, template_id, filetype):
|
||||
template_id=template_id,
|
||||
filetype='png',
|
||||
),
|
||||
page_count=get_page_count_for_letter(template),
|
||||
)
|
||||
|
||||
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'
|
||||
|
||||
|
||||
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(
|
||||
logged_in_client,
|
||||
mocker,
|
||||
@@ -447,6 +471,30 @@ def test_send_test_populates_field_from_session(
|
||||
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(
|
||||
logged_in_client,
|
||||
mocker,
|
||||
|
||||
Reference in New Issue
Block a user