Files
notifications-admin/app/main/views/service_settings.py
Adam Shimali be5aeb0676 View function for request go live was always calling update service.
Actually this should be no op until whatever workflow will take place
in the real world is implemented.

For the moment just display flash message to say request being
processed and do nothing.
2016-03-09 15:02:05 +00:00

232 lines
6.7 KiB
Python

from flask import (
render_template,
redirect,
request,
url_for,
abort,
session,
flash
)
from flask_login import (
login_required,
current_user
)
from notifications_python_client.errors import HTTPError
from app.main.dao.services_dao import (
get_service_by_id,
delete_service,
update_service
)
from app.main import main
from app.utils import user_has_permissions
from app.main.dao.users_dao import verify_password
from app.main.forms import ConfirmPasswordForm, ServiceNameForm
@main.route("/services/<service_id>/service-settings")
@login_required
@user_has_permissions('manage_settings')
def service_settings(service_id):
try:
service = get_service_by_id(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
return render_template(
'views/service-settings.html',
service=service,
service_id=service_id
)
@main.route("/services/<service_id>/service-settings/name", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings')
def service_name_change(service_id):
try:
service = get_service_by_id(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
form = ServiceNameForm()
if form.validate_on_submit():
session['service_name_change'] = form.name.data
return redirect(url_for('.service_name_change_confirm', service_id=service_id))
return render_template(
'views/service-settings/name.html',
service=service,
form=form,
service_id=service_id)
@main.route("/services/<service_id>/service-settings/name/confirm", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings')
def service_name_change_confirm(service_id):
try:
service = get_service_by_id(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
# Validate password for form
def _check_password(pwd):
return verify_password(current_user.id, pwd)
form = ConfirmPasswordForm(_check_password)
if form.validate_on_submit():
service['name'] = session['service_name_change']
update_service(service)
session['service_name'] = service['name']
session.pop('service_name_change')
return redirect(url_for('.service_settings', service_id=service_id))
return render_template(
'views/service-settings/confirm.html',
heading='Change your service name',
form=form,
service_id=service_id)
@main.route("/services/<service_id>/service-settings/request-to-go-live", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings')
def service_request_to_go_live(service_id):
try:
service = get_service_by_id(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
if request.method == 'GET':
return render_template(
'views/service-settings/request-to-go-live.html',
service=service,
service_id=service_id
)
elif request.method == 'POST':
flash('Thanks your request to go live is being processed', 'default')
# TODO implement whatever this action would do in the real world
return redirect(url_for('.service_settings', service_id=service_id))
@main.route("/services/<service_id>/service-settings/status", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings')
def service_status_change(service_id):
try:
service = get_service_by_id(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
if request.method == 'GET':
return render_template(
'views/service-settings/status.html',
service=service,
service_id=service_id
)
elif request.method == 'POST':
return redirect(url_for('.service_status_change_confirm', service_id=service_id))
@main.route("/services/<service_id>/service-settings/status/confirm", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings')
def service_status_change_confirm(service_id):
try:
service = get_service_by_id(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
# Validate password for form
def _check_password(pwd):
return verify_password(current_user.id, pwd)
form = ConfirmPasswordForm(_check_password)
if form.validate_on_submit():
service['active'] = True
update_service(service)
return redirect(url_for('.service_settings', service_id=service_id))
return render_template(
'views/service-settings/confirm.html',
heading='Turn off all outgoing notifications',
destructive=True,
form=form,
service_id=service_id)
@main.route("/services/<service_id>/service-settings/delete", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings')
def service_delete(service_id):
try:
service = get_service_by_id(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
if request.method == 'GET':
return render_template(
'views/service-settings/delete.html',
service=service,
service_id=service_id
)
elif request.method == 'POST':
return redirect(url_for('.service_delete_confirm', service_id=service_id))
@main.route("/services/<service_id>/service-settings/delete/confirm", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings')
def service_delete_confirm(service_id):
try:
service = get_service_by_id(service_id)['data']
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
# Validate password for form
def _check_password(pwd):
return verify_password(current_user.id, pwd)
form = ConfirmPasswordForm(_check_password)
if form.validate_on_submit():
try:
service = delete_service(service_id)
except HTTPError as e:
if e.status_code == 404:
abort(404)
else:
raise e
return redirect(url_for('.choose_service'))
return render_template(
'views/service-settings/confirm.html',
heading='Delete this service from Notify',
destructive=True,
form=form,
service_id=service_id)