diff --git a/eveonline/forms.py b/eveonline/forms.py index bade5b41..a12baab0 100644 --- a/eveonline/forms.py +++ b/eveonline/forms.py @@ -1,6 +1,13 @@ from django import forms - +from services.managers.eve_api_manager import EveApiManager class UpdateKeyForm(forms.Form): api_id = forms.CharField(max_length=254, required=True, label="Key ID") - api_key = forms.CharField(max_length=254, required=True, label="Verification Code") \ No newline at end of file + api_key = forms.CharField(max_length=254, required=True, label="Verification Code") + + def clean(self): + if not EveApiManager.check_api_is_type_account(self.cleaned_data['api_id'], + self.cleaned_data['api_key']): + raise forms.ValidationError(u'API not of type account') + + return self.cleaned_data \ No newline at end of file diff --git a/services/managers/eve_api_manager.py b/services/managers/eve_api_manager.py index 99489c53..47c8528f 100644 --- a/services/managers/eve_api_manager.py +++ b/services/managers/eve_api_manager.py @@ -34,3 +34,15 @@ class EveApiManager(): return ticker + @staticmethod + def check_api_is_type_account(api_id, api_key): + try: + api = evelink.api.API(api_key=(api_id, api_key)) + account = evelink.account.Account(api=api) + info = account.key_info() + return info[0]['type'] == "account" + + except evelink.api.APIError as error: + print error + + return False \ No newline at end of file diff --git a/templates/registered/addapikey.html b/templates/registered/addapikey.html index e395b961..61d6ef41 100644 --- a/templates/registered/addapikey.html +++ b/templates/registered/addapikey.html @@ -18,7 +18,7 @@ Alliance services: CharacterInfo

- Create a standard API key + Create a standard API key
Create a full API key