Merge remote-tracking branch 'origin/all-pages-everywhere'

This commit is contained in:
Chris Hill-Scott
2017-05-16 11:22:33 +01:00
4 changed files with 55 additions and 11 deletions

View File

@@ -37,7 +37,7 @@ from app.utils import (
get_help_argument,
get_template
)
from app.template_previews import TemplatePreview
from app.template_previews import TemplatePreview, get_page_count_for_letter
def get_page_headings(template_type):
@@ -83,15 +83,19 @@ def get_example_letter_address(key):
@user_has_permissions('send_texts', 'send_emails', 'send_letters')
def send_messages(service_id, template_id):
template = service_api_client.get_service_template(service_id, template_id)['data']
template = get_template(
service_api_client.get_service_template(service_id, template_id)['data'],
template,
current_service,
show_recipient=True,
expand_emails=True,
letter_preview_url=url_for(
'.view_letter_template_preview',
service_id=service_id,
template_id=template_id,
filetype='png',
page_count=get_page_count_for_letter(template),
),
)
@@ -150,15 +154,19 @@ def send_test(service_id, template_id):
file_name = current_app.config['TEST_MESSAGE_FILENAME']
template = service_api_client.get_service_template(service_id, template_id)['data']
template = get_template(
service_api_client.get_service_template(service_id, template_id)['data'],
template,
current_service,
show_recipient=True,
expand_emails=True,
letter_preview_url=url_for(
'.view_letter_template_preview',
service_id=service_id,
template_id=template_id,
filetype='png',
page_count=get_page_count_for_letter(template),
),
)

View File

@@ -19,7 +19,7 @@ from notifications_python_client.errors import HTTPError
from app.main import main
from app.utils import user_has_permissions, get_template
from app.template_previews import TemplatePreview
from app.template_previews import TemplatePreview, get_page_count_for_letter
from app.main.forms import (
ChooseTemplateType,
SMSTemplateForm,
@@ -74,10 +74,6 @@ def choose_template(service_id):
)
def view_template(service_id, template_id):
template = service_api_client.get_service_template(service_id, template_id)['data']
page_count = None
if template['template_type'] == 'letter':
page_count, _, _ = TemplatePreview.from_database_object(template, filetype='json')
page_count = json.loads(page_count.decode('utf-8'))['count']
return render_template(
'views/templates/template.html',
template=get_template(
@@ -91,7 +87,7 @@ def view_template(service_id, template_id):
filetype='png',
),
show_recipient=True,
page_count=page_count,
page_count=get_page_count_for_letter(template),
),
)

View File

@@ -1,4 +1,4 @@
from flask import current_app
from flask import current_app, json
import requests
from app import current_service
@@ -32,3 +32,14 @@ class TemplatePreview:
template.values,
page=page,
)
def get_page_count_for_letter(template, values=None):
if template['template_type'] != 'letter':
return None
page_count, _, _ = TemplatePreview.from_database_object(template, values, filetype='json')
page_count = json.loads(page_count.decode('utf-8'))['count']
return page_count

View File

@@ -4,7 +4,7 @@ from functools import partial
from unittest.mock import Mock
from notifications_utils.template import LetterPreviewTemplate
from app.template_previews import TemplatePreview
from app.template_previews import TemplatePreview, get_page_count_for_letter
@pytest.mark.parametrize('partial_call, expected_page_argument', [
@@ -65,3 +65,32 @@ def test_from_database_object_makes_request(
headers = {'Authorization': 'Token my-secret-key'}
request_mock.assert_called_once_with(expected_url, json=data, headers=headers)
@pytest.mark.parametrize('template_type', [
'email', 'sms'
])
def test_page_count_returns_none_for_non_letter_templates(template_type):
assert get_page_count_for_letter({'template_type': template_type}) is None
@pytest.mark.parametrize('partial_call, expected_template_preview_args', [
(
partial(get_page_count_for_letter),
({'template_type': 'letter'}, None)
),
(
partial(get_page_count_for_letter, values={'foo': 'bar'}),
({'template_type': 'letter'}, {'foo': 'bar'})
),
])
def test_page_count_unpacks_from_json_response(
mocker,
partial_call,
expected_template_preview_args,
):
mock_template_preview = mocker.patch('app.template_previews.TemplatePreview.from_database_object')
mock_template_preview.return_value = (b'{"count": 99}', 200, {})
assert partial_call({'template_type': 'letter'}) == 99
mock_template_preview.assert_called_once_with(*expected_template_preview_args, filetype='json')