Added a validator so that the key name is unique per service.

This commit is contained in:
Rebecca Law
2016-01-21 14:15:36 +00:00
parent 2b24909ca6
commit e7713a8b7f
4 changed files with 35 additions and 4 deletions

View File

@@ -238,4 +238,14 @@ class ConfirmMobileNumberForm(Form):
class CreateKeyForm(Form):
key_name = StringField(u'Description of key')
def __init__(self, existing_key_names=[], *args, **kwargs):
self.existing_key_names = existing_key_names
super(CreateKeyForm, self).__init__(*args, **kwargs)
key_name = StringField(u'Description of key', validators=[
DataRequired(message='You need to give the key a name')
])
def validate_key_name(self, key_name):
if key_name.data in self.existing_key_names:
raise ValidationError('A key with this name already exists')

View File

@@ -24,7 +24,10 @@ def api_keys(service_id):
@main.route("/services/<int:service_id>/api-keys/create", methods=['GET', 'POST'])
@login_required
def create_api_key(service_id):
form = CreateKeyForm()
key_names = [
key['name'] for key in api_key_api_client.get_api_keys(service_id=service_id)['apiKeys']
]
form = CreateKeyForm(key_names)
if form.validate_on_submit():
secret = api_key_api_client.create_api_key(service_id=service_id, key_name=form.key_name.data)
return render_template('views/api-keys/show.html', service_id=service_id, secret=secret,