Remove hacky dynamic classes, use the suggest method for dynamic forms

This commit is contained in:
2011-09-07 11:27:35 +01:00
parent ae3607b682
commit 829cd75191
2 changed files with 41 additions and 52 deletions

View File

@@ -10,20 +10,19 @@ from hr.models import Application, Audit, TemplateMessage
from eve_api.models import EVEPlayerCharacter, EVEPlayerCorporation
from eve_api.app_defines import API_STATUS_OK
def CreateRecommendationForm(user):
""" Generate a Recommendation form based on the user's permissions """
characters = EVEPlayerCharacter.objects.filter(eveaccount__user=user).distinct()
applications = Application.objects.filter(status=APPLICATION_STATUS_NOTSUBMITTED)
class RecommendationForm(forms.Form):
""" Service Account Form """
""" Add Recommendation Form """
character = forms.ModelChoiceField(queryset=characters, required=True, empty_label=None)
application = forms.ModelChoiceField(queryset=applications, required=True, empty_label=None)
character = forms.ModelChoiceField(queryset=EVEPlayerCharacter.objects.all(), required=True, empty_label=None)
application = forms.ModelChoiceField(queryset=Application.objects.filter(status=APPLICATION_STATUS_NOTSUBMITTED), required=True, empty_label=None)
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(RecommendationForm, self).__init__(*args, **kwargs)
self.fields['character'].queryset = EVEPlayerCharacter.objects.filter(eveaccount__user=user, eveaccount__api_status=API_STATUS_OK).distinct()
def clean(self):
char = self.cleaned_data.get('character')
app = self.cleaned_data.get('application')
@@ -32,21 +31,18 @@ def CreateRecommendationForm(user):
return self.cleaned_data
return RecommendationForm
def CreateApplicationForm(user):
""" Generate a Application form based on the user's permissions """
characters = EVEPlayerCharacter.objects.filter(eveaccount__user=user, eveaccount__api_status=API_STATUS_OK).distinct()
corporations = EVEPlayerCorporation.objects.filter(application_config__is_accepting=True)
class ApplicationForm(forms.Form):
character = forms.ModelChoiceField(queryset=characters, required=True, empty_label=None)
corporation = forms.ModelChoiceField(queryset=corporations, required=True, empty_label=None)
character = forms.ModelChoiceField(queryset=EVEPlayerCharacter.objects.all(), required=True, empty_label=None)
corporation = forms.ModelChoiceField(queryset=EVEPlayerCorporation.objects.filter(application_config__is_accepting=True), required=True, empty_label=None)
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(ApplicationForm, self).__init__(*args, **kwargs)
self.fields['character'].queryset = EVEPlayerCharacter.objects.filter(eveaccount__user=user, eveaccount__api_status=API_STATUS_OK).distinct()
def clean_character(self):
if not 'character' in self.cleaned_data or not self.cleaned_data['character']:
raise forms.ValidationError("Please select a character to apply with")
@@ -55,9 +51,7 @@ def CreateApplicationForm(user):
return self.cleaned_data['character']
def clean(self):
char = self.cleaned_data.get('character')
corp = self.cleaned_data.get('corporation')
@@ -69,8 +63,6 @@ def CreateApplicationForm(user):
return self.cleaned_data
return ApplicationForm
class NoteForm(forms.ModelForm):

View File

@@ -14,7 +14,7 @@ from gargoyle import gargoyle
from utils import installed, blacklist_values
from eve_api.models import EVEAccount, EVEPlayerCorporation, EVEPlayerCharacter
from hr.forms import CreateRecommendationForm, CreateApplicationForm, NoteForm, BlacklistUserForm, AdminNoteForm
from hr.forms import RecommendationForm, ApplicationForm, NoteForm, BlacklistUserForm, AdminNoteForm
from hr.models import Recommendation, Application, Audit, Blacklist, BlacklistSource
from app_defines import *
@@ -112,16 +112,15 @@ def view_application(request, applicationid):
def add_application(request):
""" Create a new application to a corporation """
clsform = CreateApplicationForm(request.user)
if request.method == 'POST':
form = clsform(request.POST)
form = ApplicationForm(request.POST, user=request.user)
if form.is_valid():
app = Application(user=request.user, character=form.cleaned_data['character'], corporation=form.cleaned_data['corporation'])
app.save()
messages.add_message(request, messages.INFO, "Your application to %s has been created." % app.corporation)
return HttpResponseRedirect(reverse('hr.views.view_application', args=[app.id]))
else:
form = clsform() # An unbound form
form = ApplicationForm(user=request.user)
if len(EVEPlayerCorporation.objects.filter(application_config__is_accepting=True)):
return render_to_response('hr/applications/add.html', locals(), context_instance=RequestContext(request))
@@ -145,9 +144,8 @@ def add_recommendation(request):
if len(blacklist_values(request.user, BLACKLIST_LEVEL_ADVISORY)):
raise Http404
clsform = CreateRecommendationForm(request.user)
if request.method == 'POST':
form = clsform(request.POST)
form = RecommendationForm(request.POST, user=request.user)
if form.is_valid():
rec = Recommendation(user=request.user)
rec.user_character = form.cleaned_data['character']
@@ -156,9 +154,8 @@ def add_recommendation(request):
messages.add_message(request, messages.INFO, "Recommendation added to %s's application" % rec.application )
return HttpResponseRedirect(reverse('hr.views.view_recommendations'))
else:
form = clsform() # An unbound form
form = RecommendationForm(user=request.user) # An unbound form
return render_to_response('hr/recommendations/add.html', locals(), context_instance=RequestContext(request))