mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-11 09:28:27 -04:00
These are just so we have some pages to click through for now. They don’t use real templates, or any of the broadcast stuff from the database. But I think it’s useful to get some skeleton pages in first so that we can see the map etc working in production, then build on that, without having to do it all in one mega PR. For that reason there are two short term things I’ve done in this commit which should be revisited soon: - no tests for the endpoints - data about which areas are selected is stored in the session
107 lines
3.4 KiB
Python
107 lines
3.4 KiB
Python
from flask import redirect, render_template, request, session, url_for
|
|
from notifications_utils.broadcast_areas import broadcast_area_libraries
|
|
from orderedset import OrderedSet
|
|
|
|
from app import current_service
|
|
from app.main import main
|
|
from app.utils import service_has_permission, user_has_permissions
|
|
|
|
|
|
@main.route('/services/<uuid:service_id>/broadcast')
|
|
@user_has_permissions('send_messages')
|
|
@service_has_permission('broadcast')
|
|
def broadcast(service_id):
|
|
if 'broadcast_areas' in session:
|
|
session.pop('broadcast_areas')
|
|
return redirect(url_for(
|
|
'.preview_broadcast_areas',
|
|
service_id=current_service.id,
|
|
))
|
|
|
|
|
|
@main.route('/services/<uuid:service_id>/broadcast/areas')
|
|
@user_has_permissions('send_messages')
|
|
@service_has_permission('broadcast')
|
|
def preview_broadcast_areas(service_id):
|
|
selected_areas_ids = session.get('broadcast_areas', [])
|
|
return render_template(
|
|
'views/broadcast/preview-areas.html',
|
|
selected=list(broadcast_area_libraries.get_areas(
|
|
*selected_areas_ids
|
|
)),
|
|
area_polygons=broadcast_area_libraries.get_polygons_for_areas_lat_long(
|
|
*selected_areas_ids
|
|
)
|
|
)
|
|
|
|
|
|
@main.route('/services/<uuid:service_id>/broadcast/libraries')
|
|
@user_has_permissions('send_messages')
|
|
@service_has_permission('broadcast')
|
|
def choose_broadcast_library(service_id):
|
|
return render_template(
|
|
'views/broadcast/libraries.html',
|
|
libraries=broadcast_area_libraries,
|
|
selected=broadcast_area_libraries.get_areas(
|
|
*session.get('broadcast_areas', [])
|
|
),
|
|
)
|
|
|
|
|
|
@main.route('/services/<uuid:service_id>/broadcast/libraries/<library_slug>')
|
|
@user_has_permissions('send_messages')
|
|
@service_has_permission('broadcast')
|
|
def choose_broadcast_area(service_id, library_slug):
|
|
return render_template(
|
|
'views/broadcast/areas.html',
|
|
areas=broadcast_area_libraries.get(library_slug),
|
|
)
|
|
|
|
|
|
@main.route('/services/<uuid:service_id>/broadcast/add/<area_slug>')
|
|
@user_has_permissions('send_messages')
|
|
@service_has_permission('broadcast')
|
|
def add_broadcast_area(service_id, area_slug):
|
|
if not session.get('broadcast_areas'):
|
|
session['broadcast_areas'] = []
|
|
|
|
session['broadcast_areas'].append(area_slug)
|
|
|
|
session['broadcast_areas'] = list(OrderedSet(
|
|
session['broadcast_areas']
|
|
))
|
|
return redirect(url_for(
|
|
'.preview_broadcast_areas',
|
|
service_id=current_service.id,
|
|
))
|
|
|
|
|
|
@main.route('/services/<uuid:service_id>/broadcast/remove/<area_slug>')
|
|
@user_has_permissions('send_messages')
|
|
@service_has_permission('broadcast')
|
|
def remove_broadcast_area(service_id, area_slug):
|
|
session['broadcast_areas'] = list(filter(
|
|
lambda saved_area_id: saved_area_id != area_slug,
|
|
session.get('broadcast_areas', []),
|
|
))
|
|
|
|
return redirect(url_for(
|
|
'.preview_broadcast_areas',
|
|
service_id=current_service.id,
|
|
))
|
|
|
|
|
|
@main.route('/services/<uuid:service_id>/broadcast/preview', methods=['GET', 'POST'])
|
|
@user_has_permissions('send_messages')
|
|
@service_has_permission('broadcast')
|
|
def preview_broadcast_message(service_id):
|
|
if request.method == 'POST':
|
|
return 'OK'
|
|
selected_areas = session.get('broadcast_areas', [])
|
|
return render_template(
|
|
'views/broadcast/preview-message.html',
|
|
selected=list(broadcast_area_libraries.get_areas(
|
|
*selected_areas
|
|
)),
|
|
)
|