Merge pull request #186 from alphagov/email-templates

Email templates
This commit is contained in:
Adam Shimali
2016-02-22 13:34:45 +00:00
18 changed files with 395 additions and 48 deletions

View File

@@ -1,5 +1,6 @@
from flask import url_for
from app import notifications_api_client
from notifications_python_client.errors import HTTPError
from app.utils import BrowsableItem
@@ -26,6 +27,16 @@ def get_service_by_id(id_):
return notifications_api_client.get_service(id_)
def get_service_by_id_or_404(id_):
try:
return get_service_by_id(id_)
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
def get_services(user_id=None):
if user_id:
return notifications_api_client.get_services({'user_id': str(user_id)})

View File

@@ -1,4 +1,5 @@
from datetime import datetime
from notifications_python_client import HTTPError
from sqlalchemy.orm import load_only
@@ -47,9 +48,15 @@ def activate_user(user):
def is_email_unique(email_address):
if user_api_client.get_user_by_email(email_address):
return False
return True
try:
if user_api_client.get_user_by_email(email_address):
return False
return True
except HTTPError as ex:
if ex.status_code == 404:
return True
else:
raise ex
def request_password_reset(user):

View File

@@ -1,4 +1,6 @@
from flask import render_template, redirect, session, url_for
import re
from flask import render_template, request, redirect, session, url_for
from flask_login import login_required, current_user
from app.main import main
from app.main.dao import services_dao, users_dao
@@ -15,13 +17,33 @@ def add_service():
else:
heading = 'Add a new service'
if form.validate_on_submit():
user = users_dao.get_user_by_id(session['user_id'])
service_id = services_dao.insert_new_service(form.name.data, user.id)
session['service_name'] = form.name.data
return redirect(url_for('main.service_dashboard', service_id=service_id))
return redirect(url_for('main.add_from_address'))
else:
return render_template(
'views/add-service.html',
form=form,
heading=heading
)
@main.route("/confirm-add-service", methods=['GET', 'POST'])
@login_required
def add_from_address():
if request.method == 'POST':
user = users_dao.get_user_by_id(session['user_id'])
service_id = services_dao.insert_new_service(session['service_name'], user.id)
return redirect(url_for('main.service_dashboard', service_id=service_id))
else:
return render_template(
'views/add-from-address.html',
service_name=session['service_name'],
from_address="{}@notifications.service.gov.uk".format(_email_safe(session['service_name']))
)
def _email_safe(string):
return "".join([
character.lower() if character.isalnum() or character == "." else ""
for character in re.sub("\s+", ".", string.strip())
])

View File

@@ -26,7 +26,6 @@ def register():
return redirect(url_for('main.choose_service'))
form = RegisterUserForm()
if form.validate_on_submit():
if users_dao.is_email_unique(form.email_address.data):
try:

View File

@@ -127,6 +127,7 @@ def check_sms(service_id, upload_id):
template_id = upload_data.get('template_id')
raw_template = templates_dao.get_service_template_or_404(service_id, template_id)['data']
upload_result = _get_rows(contents, raw_template)
print(upload_result)
template = Template(
raw_template,
values=upload_result['rows'][0] if upload_result['valid'] else {},