mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-23 07:46:23 -04:00
Add a tour for users new to broadcast services
This is an initial, prototype-quality attempt at introducing some kind of tour for users new to broadcasting. A lot of the users we’re speaking to don’t have a good concept of what broadcasting means, which is causing usability problems down the line. We did a similar thing in the early days of Notify to explain the concept of message templates and personalisation.
This commit is contained in:
@@ -19,6 +19,17 @@ from app.models.broadcast_message import BroadcastMessage, BroadcastMessages
|
||||
from app.utils import service_has_permission, user_has_permissions
|
||||
|
||||
|
||||
@main.route('/services/<uuid:service_id>/broadcast-tour/<int:step_index>')
|
||||
@user_has_permissions()
|
||||
@service_has_permission('broadcast')
|
||||
def broadcast_tour(service_id, step_index):
|
||||
if step_index not in (1, 2, 3):
|
||||
abort(404)
|
||||
return render_template(
|
||||
f'views/broadcast/tour/{step_index}.html'
|
||||
)
|
||||
|
||||
|
||||
@main.route('/services/<uuid:service_id>/broadcast-dashboard')
|
||||
@user_has_permissions()
|
||||
@service_has_permission('broadcast')
|
||||
|
||||
@@ -40,6 +40,9 @@ def accept_invite(token):
|
||||
|
||||
if invited_user.status == 'accepted':
|
||||
session.pop('invited_user', None)
|
||||
service = Service.from_id(invited_user.service)
|
||||
if service.has_permission('broadcast'):
|
||||
return redirect(url_for('main.broadcast_tour', service_id=service.id, step_index=1))
|
||||
return redirect(url_for('main.service_dashboard', service_id=invited_user.service))
|
||||
|
||||
session['invited_user'] = invited_user.serialize()
|
||||
@@ -66,6 +69,8 @@ def accept_invite(token):
|
||||
permissions=invited_user.permissions,
|
||||
folder_permissions=invited_user.folder_permissions,
|
||||
)
|
||||
if service.has_permission('broadcast'):
|
||||
return redirect(url_for('main.broadcast_tour', service_id=service.id, step_index=1))
|
||||
return redirect(url_for('main.service_dashboard', service_id=service.id))
|
||||
else:
|
||||
return redirect(url_for('main.register_from_invite'))
|
||||
|
||||
@@ -15,6 +15,7 @@ from notifications_utils.url_safe_token import check_token
|
||||
from app import user_api_client
|
||||
from app.main import main
|
||||
from app.main.forms import TwoFactorForm
|
||||
from app.models.service import Service
|
||||
from app.models.user import InvitedUser, User
|
||||
from app.utils import redirect_to_sign_in
|
||||
|
||||
@@ -77,6 +78,9 @@ def activate_user(user_id):
|
||||
invited_user = session.get('invited_user')
|
||||
if invited_user:
|
||||
service_id = _add_invited_user_to_service(invited_user)
|
||||
service = Service.from_id(service_id)
|
||||
if service.has_permission('broadcast'):
|
||||
return redirect(url_for('main.broadcast_tour', service_id=service.id, step_index=1))
|
||||
return redirect(url_for('main.service_dashboard', service_id=service_id))
|
||||
|
||||
invited_org_user = session.get('invited_org_user')
|
||||
|
||||
Reference in New Issue
Block a user