Merge pull request #1163 from alphagov/unified-template-page

Merge email, text message and letter templates pages
This commit is contained in:
Chris Hill-Scott
2017-03-06 10:42:08 +00:00
committed by GitHub
15 changed files with 168 additions and 143 deletions

View File

@@ -558,3 +558,23 @@ class DateFilterForm(Form):
start_date = DateField("Start Date", [validators.optional()])
end_date = DateField("End Date", [validators.optional()])
include_from_test_key = BooleanField("Include test keys", default="checked", false_values={"N"})
class ChooseTemplateType(Form):
template_type = RadioField(
'What kind of template do you want to add?',
validators=[
DataRequired()
]
)
def __init__(self, include_letters=False, *args, **kwargs):
super().__init__(*args, **kwargs)
self.template_type.choices = filter(None, [
('email', 'Email'),
('sms', 'Text message'),
('letter', 'Letter') if include_letters else None
])

View File

@@ -82,35 +82,6 @@ def get_example_letter_address(key):
}.get(key, '')
@main.route("/services/<service_id>/send/<template_type>", methods=['GET'])
@login_required
@user_has_permissions('view_activity',
'send_texts',
'send_emails',
'manage_templates',
'manage_api_keys',
admin_override=True, any_=True)
def choose_template(service_id, template_type):
if template_type not in ['email', 'sms', 'letter']:
abort(404)
if not current_service['can_send_letters'] and template_type == 'letter':
abort(403)
return render_template(
'views/templates/choose.html',
templates=[
get_template(
template,
current_service,
letter_preview_url=url_for('.view_template', service_id=service_id, template_id=template['id']),
)
for template in service_api_client.get_service_templates(service_id)['data']
if template['template_type'] == template_type
],
template_type=template_type,
page_heading=get_page_headings(template_type)
)
@main.route("/services/<service_id>/send/<template_id>/csv", methods=['GET', 'POST'])
@login_required
@user_has_permissions('send_texts', 'send_emails', 'send_letters')
@@ -285,7 +256,7 @@ def _check_messages(service_id, template_type, upload_id, letters_as_pdf=False):
)
else:
back_link = url_for(
'.choose_template', service_id=service_id, template_type=template.template_type, **extra_args
'.choose_template', service_id=service_id, **extra_args
)
choose_time_form = None
else:
@@ -359,7 +330,7 @@ def check_messages_as_png(service_id, template_type, upload_id):
def recheck_messages(service_id, template_type, upload_id):
if not session.get('upload_data'):
return redirect(url_for('main.choose_template', service_id=service_id, template_type=template_type))
return redirect(url_for('main.choose_template', service_id=service_id))
return send_messages(service_id, session['upload_data'].get('template_id'))
@@ -412,4 +383,4 @@ def get_check_messages_back_url(service_id, template_type):
if len(templates) == 1:
return url_for('.send_test', service_id=service_id, template_id=templates[0]['id'], help=1)
return url_for('main.choose_template', service_id=service_id, template_type=template_type)
return url_for('main.choose_template', service_id=service_id)

View File

@@ -12,7 +12,7 @@ from notifications_python_client.errors import HTTPError
from app.main import main
from app.utils import user_has_permissions, get_template, png_from_pdf
from app.main.forms import SMSTemplateForm, EmailTemplateForm, LetterTemplateForm
from app.main.forms import ChooseTemplateType, SMSTemplateForm, EmailTemplateForm, LetterTemplateForm
from app.main.views.send import get_example_csv_rows
from app import service_api_client, current_service, template_statistics_client
@@ -29,6 +29,32 @@ page_headings = {
}
@main.route("/services/<service_id>/templates", methods=['GET'])
@login_required
@user_has_permissions(
'view_activity',
'send_texts',
'send_emails',
'manage_templates',
'manage_api_keys',
admin_override=True,
any_=True,
)
def choose_template(service_id):
return render_template(
'views/templates/choose.html',
templates=[
get_template(
template,
current_service,
letter_preview_url=url_for('.view_template', service_id=service_id, template_id=template['id']),
)
for template in service_api_client.get_service_templates(service_id)['data']
if should_show_template(template['template_type'])
],
)
@main.route("/services/<service_id>/templates/<template_id>")
@login_required
@user_has_permissions(
@@ -139,6 +165,25 @@ def view_template_version_as_png(service_id, template_id, version):
))
@main.route("/services/<service_id>/templates/add", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_templates', admin_override=True)
def add_template_by_type(service_id):
form = ChooseTemplateType(
include_letters=current_service['can_send_letters']
)
if form.validate_on_submit():
return redirect(url_for(
'.add_service_template',
service_id=service_id,
template_type=form.template_type.data,
))
return render_template('views/templates/add.html', form=form)
@main.route("/services/<service_id>/templates/add-<template_type>", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_templates', admin_override=True)
@@ -173,7 +218,7 @@ def add_service_template(service_id, template_type):
raise e
else:
return redirect(
url_for('.choose_template', service_id=service_id, template_type=template_type)
url_for('.choose_template', service_id=service_id)
)
return render_template(
@@ -362,3 +407,10 @@ def get_human_readable_delta(from_time, until_time):
else:
days = delta.days
return '{} day{}'.format(days, '' if days == 1 else 's')
def should_show_template(template_type):
return (
template_type != 'letter' or
current_service['can_send_letters']
)