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

View File

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