mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-18 21:49:37 -04:00
Merge pull request #2462 from alphagov/api-key-sort-order
Sort API keys alphabetically
This commit is contained in:
@@ -525,9 +525,11 @@ class ChooseTimeForm(StripWhitespaceForm):
|
||||
|
||||
|
||||
class CreateKeyForm(StripWhitespaceForm):
|
||||
def __init__(self, existing_key_names=[], *args, **kwargs):
|
||||
self.existing_key_names = [x.lower() for x in existing_key_names]
|
||||
super(CreateKeyForm, self).__init__(*args, **kwargs)
|
||||
def __init__(self, existing_keys, *args, **kwargs):
|
||||
self.existing_key_names = [
|
||||
key['name'].lower() for key in existing_keys
|
||||
]
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
key_type = RadioField(
|
||||
'Type of key',
|
||||
|
||||
@@ -80,7 +80,6 @@ def whitelist(service_id):
|
||||
def api_keys(service_id):
|
||||
return render_template(
|
||||
'views/api/keys.html',
|
||||
keys=api_key_api_client.get_api_keys(service_id=service_id)['apiKeys']
|
||||
)
|
||||
|
||||
|
||||
@@ -88,10 +87,7 @@ def api_keys(service_id):
|
||||
@login_required
|
||||
@user_has_permissions('manage_api_keys', restrict_admin_usage=True)
|
||||
def create_api_key(service_id):
|
||||
key_names = [
|
||||
key['name'] for key in api_key_api_client.get_api_keys(service_id=service_id)['apiKeys']
|
||||
]
|
||||
form = CreateKeyForm(key_names)
|
||||
form = CreateKeyForm(current_service.api_keys)
|
||||
form.key_type.choices = [
|
||||
(KEY_TYPE_NORMAL, 'Live – sends to anyone'),
|
||||
(KEY_TYPE_TEAM, 'Team and whitelist – limits who you can send to'),
|
||||
@@ -132,12 +128,11 @@ def create_api_key(service_id):
|
||||
@login_required
|
||||
@user_has_permissions('manage_api_keys')
|
||||
def revoke_api_key(service_id, key_id):
|
||||
key_name = api_key_api_client.get_api_keys(service_id=service_id, key_id=key_id)['apiKeys'][0]['name']
|
||||
key_name = current_service.get_api_key(key_id)['name']
|
||||
if request.method == 'GET':
|
||||
return render_template(
|
||||
'views/api/keys.html',
|
||||
revoke_key=key_name,
|
||||
keys=api_key_api_client.get_api_keys(service_id=service_id)['apiKeys'],
|
||||
)
|
||||
elif request.method == 'POST':
|
||||
api_key_api_client.revoke_api_key(service_id=service_id, key_id=key_id)
|
||||
|
||||
@@ -2,6 +2,7 @@ from flask import abort
|
||||
from notifications_utils.field import Field
|
||||
from werkzeug.utils import cached_property
|
||||
|
||||
from app.notify_client.api_key_api_client import api_key_api_client
|
||||
from app.notify_client.billing_api_client import billing_api_client
|
||||
from app.notify_client.email_branding_client import email_branding_client
|
||||
from app.notify_client.inbound_number_client import inbound_number_client
|
||||
@@ -364,3 +365,16 @@ class Service():
|
||||
template_ids=ids_to_move & self.all_template_ids,
|
||||
folder_ids=ids_to_move & self.all_template_folder_ids,
|
||||
)
|
||||
|
||||
@cached_property
|
||||
def api_keys(self):
|
||||
return sorted(
|
||||
api_key_api_client.get_api_keys(self.id)['apiKeys'],
|
||||
key=lambda key: key['name'].lower(),
|
||||
)
|
||||
|
||||
def get_api_key(self, id):
|
||||
try:
|
||||
return next(key for key in self.api_keys if key['id'] == id)
|
||||
except StopIteration:
|
||||
abort(404)
|
||||
|
||||
@@ -10,11 +10,8 @@ class ApiKeyApiClient(NotifyAdminAPIClient):
|
||||
def __init__(self):
|
||||
super().__init__("a" * 73, "b")
|
||||
|
||||
def get_api_keys(self, service_id, key_id=None):
|
||||
if key_id:
|
||||
return self.get(url='/service/{}/api-keys/{}'.format(service_id, key_id))
|
||||
else:
|
||||
return self.get(url='/service/{}/api-keys'.format(service_id))
|
||||
def get_api_keys(self, service_id):
|
||||
return self.get(url='/service/{}/api-keys'.format(service_id))
|
||||
|
||||
def create_api_key(self, service_id, key_name, key_type):
|
||||
data = {
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
<div class="body-copy-table">
|
||||
{% call(item, row_number) list_table(
|
||||
keys,
|
||||
current_service.api_keys,
|
||||
empty_message="You haven’t created any API keys yet",
|
||||
caption="API keys",
|
||||
caption_visible=false,
|
||||
|
||||
Reference in New Issue
Block a user