mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 10:53:28 -05:00
This commit adds a new page, which appears after a user enters the name for their new service. It shows how the service name will appear in emails and text messages. This means that the new service is not created until after they have confirmed that the name is appropriate in context. This has also involved: - visual changes to the ‘email template’ pattern, which wasn’t very refined before - removing a bunch of words from the enter service name page, because most users don’t read them, and we reckon that showing a preview is a better way of getting them to understand what is meant by service name Still to do: - validating the the generated email address for a service is unique (on the API) side - having the API return the generated email address, rather than determining it in the admin app
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
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
|
|
from app.main.forms import AddServiceForm
|
|
|
|
|
|
@main.route("/add-service", methods=['GET', 'POST'])
|
|
@login_required
|
|
def add_service():
|
|
form = AddServiceForm(services_dao.find_all_service_names)
|
|
services = services_dao.get_services(current_user.id)
|
|
if len(services['data']) == 0:
|
|
heading = 'Which service do you want to set up notifications for?'
|
|
else:
|
|
heading = 'Add a new service'
|
|
if form.validate_on_submit():
|
|
session['service_name'] = form.name.data
|
|
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())
|
|
])
|