mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 06:42:16 +00:00
64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
import re
|
|
|
|
from django import forms
|
|
from gargoyle import gargoyle
|
|
|
|
from eve_api.models import EVEAccount, EVEPlayerCharacter, EVEPlayerCorporation
|
|
|
|
|
|
class EVEAPIForm(forms.ModelForm):
|
|
""" EVE API input form """
|
|
|
|
class Meta:
|
|
model = EVEAccount
|
|
fields = ('api_user_id', 'api_key', 'description', 'user')
|
|
widgets = {'user': forms.HiddenInput()}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(EVEAPIForm, self).__init__(*args, **kwargs)
|
|
instance = getattr(self, 'instance', None)
|
|
|
|
if instance and instance.pk:
|
|
# We're editing a existing instance, readonly the userid
|
|
self.fields['api_user_id'].widget.attrs['readonly'] = True
|
|
else:
|
|
# New instance, hide description
|
|
del self.fields['description']
|
|
|
|
if gargoyle.is_active('eve-cak'):
|
|
self.fields['api_user_id'].label = 'Key ID'
|
|
self.fields['api_key'].label = 'Verification Code'
|
|
|
|
def clean_api_key(self):
|
|
|
|
if not gargoyle.is_active('eve-cak') and not len(self.cleaned_data['api_key']) == 64:
|
|
raise forms.ValidationError("Provided API Key is not 64 characters long.")
|
|
|
|
if re.search(r'[^\.a-zA-Z0-9]', self.cleaned_data['api_key']):
|
|
raise forms.ValidationError("Provided API Key has invalid characters.")
|
|
|
|
return self.cleaned_data['api_key']
|
|
|
|
def clean_api_user_id(self):
|
|
|
|
if not 'api_user_id' in self.cleaned_data or self.cleaned_data['api_user_id'] == '':
|
|
raise forms.ValidationError("Please provide a valid User ID")
|
|
|
|
try:
|
|
int(self.cleaned_data['api_user_id'])
|
|
except ValueError:
|
|
raise forms.ValidationError("Please provide a valid user ID.")
|
|
|
|
if self.instance and self.instance.pk:
|
|
if not int(self.cleaned_data['api_user_id']) == self.instance.api_user_id:
|
|
raise forms.ValidationError("You cannot change your API User ID")
|
|
else:
|
|
try:
|
|
eaccount = EVEAccount.objects.get(api_user_id=self.cleaned_data['api_user_id'], user__isnull=False)
|
|
except EVEAccount.DoesNotExist:
|
|
pass
|
|
else:
|
|
raise forms.ValidationError("This API User ID is already registered")
|
|
|
|
return self.cleaned_data['api_user_id']
|