mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-03-12 06:12:28 -04:00
The tour teaches you how Notify works by letting you do a thing and then showing you the effect of the thing you’ve just done – a text message on your phone. This is not as effective if you don’t get the text message quickly. It breaks the association you make between what you’ve done on the computer and what’s happening on your phone. Slow text message delivery can happen if you’re doing a big job. We can get around this by making your text message use the priority queue. This was observed in the pilot research session yesterday.
94 lines
2.9 KiB
Python
94 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.send_test',
|
||
service_id=service_id,
|
||
template_id=example_sms_template['data']['id'],
|
||
help=1
|
||
))
|
||
else:
|
||
return render_template(
|
||
'views/add-service.html',
|
||
form=form,
|
||
heading=heading
|
||
)
|