mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 14:52:15 +00:00
Remove hacky dynamic classes, use the suggest method for dynamic forms
This commit is contained in:
@@ -10,66 +10,58 @@ 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')
|
||||||
|
app = self.cleaned_data.get('application')
|
||||||
|
|
||||||
char = self.cleaned_data.get('character')
|
if app.user in User.objects.filter(eveaccount__characters__id=char.id):
|
||||||
app = self.cleaned_data.get('application')
|
raise forms.ValidationError("You cannot recommend your own character")
|
||||||
|
|
||||||
if app.user in User.objects.filter(eveaccount__characters__id=char.id):
|
return self.cleaned_data
|
||||||
raise forms.ValidationError("You cannot recommend your own character")
|
|
||||||
|
|
||||||
return self.cleaned_data
|
|
||||||
|
|
||||||
return RecommendationForm
|
|
||||||
|
|
||||||
|
|
||||||
def CreateApplicationForm(user):
|
class ApplicationForm(forms.Form):
|
||||||
""" Generate a Application form based on the user's permissions """
|
|
||||||
|
|
||||||
characters = EVEPlayerCharacter.objects.filter(eveaccount__user=user, eveaccount__api_status=API_STATUS_OK).distinct()
|
character = forms.ModelChoiceField(queryset=EVEPlayerCharacter.objects.all(), required=True, empty_label=None)
|
||||||
corporations = EVEPlayerCorporation.objects.filter(application_config__is_accepting=True)
|
corporation = forms.ModelChoiceField(queryset=EVEPlayerCorporation.objects.filter(application_config__is_accepting=True), required=True, empty_label=None)
|
||||||
|
|
||||||
class ApplicationForm(forms.Form):
|
def __init__(self, *args, **kwargs):
|
||||||
character = forms.ModelChoiceField(queryset=characters, required=True, empty_label=None)
|
user = kwargs.pop('user', None)
|
||||||
corporation = forms.ModelChoiceField(queryset=corporations, required=True, empty_label=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):
|
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")
|
|
||||||
|
|
||||||
if Application.objects.filter(character=self.cleaned_data['character']).exclude(status__in=[APPLICATION_STATUS_NOTSUBMITTED, APPLICATION_STATUS_COMPLETED, APPLICATION_STATUS_REJECTED]).count():
|
if Application.objects.filter(character=self.cleaned_data['character']).exclude(status__in=[APPLICATION_STATUS_NOTSUBMITTED, APPLICATION_STATUS_COMPLETED, APPLICATION_STATUS_REJECTED]).count():
|
||||||
raise forms.ValidationError("This character already has a open application")
|
raise forms.ValidationError("This character already has a open application")
|
||||||
|
|
||||||
return self.cleaned_data['character']
|
return self.cleaned_data['character']
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
char = self.cleaned_data.get('character')
|
||||||
|
corp = self.cleaned_data.get('corporation')
|
||||||
|
|
||||||
def clean(self):
|
if char and corp:
|
||||||
|
if char.corporation == corp:
|
||||||
|
raise forms.ValidationError("%s is already a member of %s" % (char, corp))
|
||||||
|
if not char.account.api_keytype == corp.application_config.api_required:
|
||||||
|
raise forms.ValidationError("%s requires a %s API key for this application" % (corp, corp.application_config.get_api_required_display()))
|
||||||
|
|
||||||
char = self.cleaned_data.get('character')
|
return self.cleaned_data
|
||||||
corp = self.cleaned_data.get('corporation')
|
|
||||||
|
|
||||||
if char and corp:
|
|
||||||
if char.corporation == corp:
|
|
||||||
raise forms.ValidationError("%s is already a member of %s" % (char, corp))
|
|
||||||
if not char.account.api_keytype == corp.application_config.api_required:
|
|
||||||
raise forms.ValidationError("%s requires a %s API key for this application" % (corp, corp.application_config.get_api_required_display()))
|
|
||||||
|
|
||||||
return self.cleaned_data
|
|
||||||
|
|
||||||
return ApplicationForm
|
|
||||||
|
|
||||||
|
|
||||||
class NoteForm(forms.ModelForm):
|
class NoteForm(forms.ModelForm):
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user