mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-09 02:44:10 -04:00
We’ve made a few changes to the tour recently, without changing the help text on the left hand side of the screen. So the stuff you see on the right side of the screen doesn’t quite sync up any more. This commit adds an extra, introductory page that just shows the template and a next button, which better matches the ‘every message starts with a template’ help text.
93 lines
2.9 KiB
Python
93 lines
2.9 KiB
Python
from flask import (
|
||
render_template,
|
||
redirect,
|
||
session,
|
||
url_for,
|
||
current_app
|
||
)
|
||
|
||
from flask_login import (
|
||
current_user,
|
||
login_required
|
||
)
|
||
|
||
from werkzeug.exceptions import abort
|
||
|
||
from app.main import main
|
||
from app.main.forms import AddServiceForm
|
||
from app.notify_client.models import InvitedUser
|
||
|
||
from app import (
|
||
invite_api_client,
|
||
user_api_client,
|
||
service_api_client
|
||
)
|
||
|
||
from app.utils import (
|
||
email_safe,
|
||
is_gov_user
|
||
)
|
||
|
||
|
||
def _add_invited_user_to_service(invited_user):
|
||
invitation = InvitedUser(**invited_user)
|
||
# if invited user add to service and redirect to dashboard
|
||
user = user_api_client.get_user(session['user_id'])
|
||
service_id = invited_user['service']
|
||
user_api_client.add_user_to_service(service_id, user.id, invitation.permissions)
|
||
invite_api_client.accept_invite(service_id, invitation.id)
|
||
return service_id
|
||
|
||
|
||
def _create_service(service_name, email_from):
|
||
service_id = service_api_client.create_service(service_name=service_name,
|
||
message_limit=current_app.config['DEFAULT_SERVICE_LIMIT'],
|
||
restricted=True,
|
||
user_id=session['user_id'],
|
||
email_from=email_from)
|
||
session['service_id'] = service_id
|
||
return service_id
|
||
|
||
|
||
@main.route("/add-service", methods=['GET', 'POST'])
|
||
@login_required
|
||
def add_service():
|
||
invited_user = session.get('invited_user')
|
||
if invited_user:
|
||
service_id = _add_invited_user_to_service(invited_user)
|
||
return redirect(url_for('main.service_dashboard', service_id=service_id))
|
||
|
||
if not is_gov_user(current_user.email_address):
|
||
abort(403)
|
||
|
||
form = AddServiceForm(service_api_client.find_all_service_email_from)
|
||
heading = 'Which service do you want to set up notifications for?'
|
||
|
||
if form.validate_on_submit():
|
||
email_from = email_safe(form.name.data)
|
||
service_name = form.name.data
|
||
service_id = _create_service(service_name, email_from)
|
||
|
||
if (len(service_api_client.get_active_services({'user_id': session['user_id']}).get('data', [])) > 1):
|
||
return redirect(url_for('main.service_dashboard', service_id=service_id))
|
||
|
||
example_sms_template = service_api_client.create_service_template(
|
||
'Example text message template',
|
||
'sms',
|
||
'Hey ((name)), I’m trying out Notify. Today is ((day of week)) and my favourite colour is ((colour)).',
|
||
service_id,
|
||
process_type='priority',
|
||
)
|
||
|
||
return redirect(url_for(
|
||
'main.start_tour',
|
||
service_id=service_id,
|
||
template_id=example_sms_template['data']['id'],
|
||
))
|
||
else:
|
||
return render_template(
|
||
'views/add-service.html',
|
||
form=form,
|
||
heading=heading
|
||
)
|