diff --git a/app/eve_api/forms.py b/app/eve_api/forms.py index f6d1539..bbe7e52 100644 --- a/app/eve_api/forms.py +++ b/app/eve_api/forms.py @@ -4,12 +4,13 @@ from django import forms from eve_api.models import EVEAccount, EVEPlayerCharacter, EVEPlayerCorporation -class EveAPIForm(forms.Form): +class EveAPIForm(forms.ModelForm): """ EVE API input form """ - user_id = forms.IntegerField(label=u'User ID') - api_key = forms.CharField(label=u'API Key', max_length=64) - description = forms.CharField(max_length=100, required=False) + class Meta: + model = EVEAccount + fields = ('api_user_id', 'api_key', 'description', 'user') + widgets = {'user': forms.HiddenInput()} def clean_api_key(self): @@ -31,11 +32,12 @@ class EveAPIForm(forms.Form): except ValueError: raise forms.ValidationError("Please provide a valid user ID.") - try: - eaccount = EVEAccount.objects.get(api_user_id=self.cleaned_data['user_id']) - except EVEAccount.DoesNotExist: - pass - else: - raise forms.ValidationError("This API User ID is already registered") + if not self.update: + try: + eaccount = EVEAccount.objects.get(api_user_id=self.cleaned_data['user_id']) + except EVEAccount.DoesNotExist: + pass + else: + raise forms.ValidationError("This API User ID is already registered") return self.cleaned_data['user_id'] diff --git a/app/eve_api/models/account.py b/app/eve_api/models/account.py index fd4cf36..a5db622 100644 --- a/app/eve_api/models/account.py +++ b/app/eve_api/models/account.py @@ -12,8 +12,10 @@ class EVEAccount(EVEAPIModel): help_text="User that owns this account") description = models.CharField(max_length=50, blank=True, help_text="User-provided description.") - api_key = models.CharField(max_length=64, verbose_name="API Key") - api_user_id = models.IntegerField(verbose_name="API User ID") + api_key = models.CharField(max_length=64, verbose_name="API Key", + help_text="EVE API Key") + api_user_id = models.IntegerField(verbose_name="API User ID", + help_text="EVE API User ID") characters = models.ManyToManyField('eve_api.EVEPlayerCharacter', blank=True, null=True) api_status = models.IntegerField(choices=API_STATUS_CHOICES, default=API_STATUS_PENDING, diff --git a/app/eve_api/tasks/account.py b/app/eve_api/tasks/account.py index 47239f2..9bce927 100644 --- a/app/eve_api/tasks/account.py +++ b/app/eve_api/tasks/account.py @@ -102,7 +102,8 @@ def import_apikey_func(api_userid, api_key, user=None, force_cache=False, log=lo # Create or retrieve the account last to make sure everything # before here is good to go. - account, created = EVEAccount.objects.get_or_create(id=api_userid, api_user_id=api_userid, api_key=api_key) + account, created = EVEAccount.objects.get_or_create(id=api_userid, api_user_id=api_userid) + account.api_key = api_key account.api_status = API_STATUS_OK if user and created: account.user = User.objects.get(id=user) diff --git a/app/eve_api/templates/eve_api/update.html b/app/eve_api/templates/eve_api/update.html new file mode 100644 index 0000000..5389cf2 --- /dev/null +++ b/app/eve_api/templates/eve_api/update.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} + +{% block title %}Update EVE API Key{% endblock %} + +{% block content %} +
Please update your API key as provided on the EVE Online API +page and a optional description.
+ + + +{% endblock %} diff --git a/app/eve_api/urls.py b/app/eve_api/urls.py index af1b162..ed61f68 100644 --- a/app/eve_api/urls.py +++ b/app/eve_api/urls.py @@ -5,6 +5,7 @@ from eve_api import views urlpatterns = patterns('', url(r'^eveapi/add/', views.eveapi_add, name="eveapi-add"), + url(r'^eveapi/update/(?P