Use Template to replace/highlight placeholders

This commit brings in the `Template` util, added here:
https://github.com/alphagov/notifications-utils/pull/1

It also does a fair bit of tidying up, which I’ve unfortunately squashed into
this one massive commit. The main change is moving 404 handling into the
templates dao, so that every view isn’t littered with `try: … except(HTTPError)`.

It also adds new features, in a prototypy sort of way, which are:
- download a prefilled example CSV
- show all the columns for your template on the 'check' page
This commit is contained in:
Chris Hill-Scott
2016-02-08 16:36:53 +00:00
parent b7c226e2a8
commit 2d55bb7ae2
13 changed files with 127 additions and 101 deletions

View File

@@ -1,13 +1,15 @@
from flask import request, render_template, redirect, url_for, flash, abort
from flask_login import login_required
from notifications_python_client.errors import HTTPError
from utils.template import Template
from app.main import main
from app.main.forms import TemplateForm
from app import job_api_client
from app.main.dao.services_dao import get_service_by_id
from app.main.dao import templates_dao as tdao
from app.main.dao import services_dao as sdao
from notifications_python_client.errors import HTTPError
@main.route("/services/<service_id>/templates")
@@ -15,7 +17,6 @@ from notifications_python_client.errors import HTTPError
def manage_service_templates(service_id):
try:
jobs = job_api_client.get_job(service_id)['data']
templates = tdao.get_service_templates(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
@@ -25,7 +26,11 @@ def manage_service_templates(service_id):
'views/manage-templates.html',
service_id=service_id,
has_jobs=bool(jobs),
templates=[tdao.TemplatesBrowsableItem(x) for x in templates])
templates=[
Template(template)
for template in tdao.get_service_templates(service_id)['data']
]
)
@main.route("/services/<service_id>/templates/add", methods=['GET', 'POST'])
@@ -56,14 +61,7 @@ def add_service_template(service_id):
@main.route("/services/<service_id>/templates/<int:template_id>", methods=['GET', 'POST'])
@login_required
def edit_service_template(service_id, template_id):
try:
template = tdao.get_service_template(service_id, template_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
template = tdao.get_service_template_or_404(service_id, template_id)['data']
template['template_content'] = template['content']
form = TemplateForm(**template)
@@ -84,21 +82,14 @@ def edit_service_template(service_id, template_id):
@main.route("/services/<service_id>/templates/<int:template_id>/delete", methods=['GET', 'POST'])
@login_required
def delete_service_template(service_id, template_id):
try:
template = tdao.get_service_template(service_id, template_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
template['template_content'] = template['content']
form = TemplateForm(**template)
template = tdao.get_service_template_or_404(service_id, template_id)['data']
if request.method == 'POST':
tdao.delete_service_template(service_id, template_id)
return redirect(url_for('.manage_service_templates', service_id=service_id))
template['template_content'] = template['content']
form = TemplateForm(**template)
flash('Are you sure you want to delete {}?'.format(form.name.data), 'delete')
return render_template(
'views/edit-template.html',