Merge pull request #1008 from alphagov/deactivate-service

Deactivate service
This commit is contained in:
Leo Hemsted
2016-11-14 11:41:13 +00:00
committed by GitHub
8 changed files with 152 additions and 248 deletions

View File

@@ -186,37 +186,16 @@ def service_switch_can_send_letters(service_id):
return redirect(url_for('.service_settings', service_id=service_id))
@main.route("/services/<service_id>/service-settings/delete", methods=['GET', 'POST'])
@main.route("/services/<service_id>/service-settings/deactivate", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_settings', admin_override=True)
def service_delete(service_id):
if request.method == 'GET':
return render_template(
'views/service-settings/delete.html'
)
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', admin_override=True)
def service_delete_confirm(service_id):
# Validate password for form
def _check_password(pwd):
return user_api_client.verify_password(current_user.id, pwd)
form = ConfirmPasswordForm(_check_password)
if form.validate_on_submit():
service_api_client.delete_service(service_id)
return redirect(url_for('.choose_service'))
return render_template(
'views/service-settings/confirm.html',
heading='Delete this service from Notify',
destructive=True,
form=form)
def deactivate_service(service_id):
if request.method == 'POST':
service_api_client.deactivate_service(service_id)
return redirect(url_for('.service_settings', service_id=service_id))
else:
flash('There\'s no way to reverse this! Are you sure you want to archive this service?', 'delete')
return service_settings(service_id)
@main.route("/services/<service_id>/service-settings/set-reply-to-email", methods=['GET', 'POST'])

View File

@@ -1,11 +1,11 @@
from __future__ import unicode_literals
from flask import url_for
from notifications_python_client.notifications import NotificationsAPIClient
from notifications_python_client.base import BaseAPIClient
from app.utils import BrowsableItem
from app.notify_client import _attach_current_user
class ServiceAPIClient(NotificationsAPIClient):
class ServiceAPIClient(BaseAPIClient):
# Fudge assert in the super __init__ so
# we can set those variables later.
def __init__(self):
@@ -31,14 +31,6 @@ class ServiceAPIClient(NotificationsAPIClient):
data = _attach_current_user(data)
return self.post("/service", data)['data']['id']
def delete_service(self, service_id):
"""
Delete a service.
"""
endpoint = "/service/{0}".format(service_id)
data = _attach_current_user({})
return self.delete(endpoint, data)
def get_service(self, service_id):
return self._get_service(service_id, detailed=False, today_only=False)
@@ -105,6 +97,9 @@ class ServiceAPIClient(NotificationsAPIClient):
def update_service_with_properties(self, service_id, properties):
return self.update_service(service_id, **properties)
def deactivate_service(self, service_id):
return self.post('/service/{}/deactivate'.format(service_id), data=None)
def remove_user_from_service(self, service_id, user_id):
"""
Remove a user from a service

View File

@@ -109,6 +109,13 @@
{{ 'Stop sending letters' if current_service.can_send_letters else 'Allow to send letters' }}
</a>
</li>
{% if current_service.active %}
<li class="bottom-gutter">
<a href="{{ url_for('.deactivate_service', service_id=current_service.id) }}" class="button">
Archive service
</a>
</li>
{% endif %}
</ul>
{% endif %}