Updated hr management to actually be useful

This commit is contained in:
Raynaldo Rivera
2014-11-20 03:21:07 -07:00
parent 9e432674fa
commit d52a0d5331
10 changed files with 424 additions and 52 deletions

1
hrapplications/admin.py Normal file → Executable file
View File

@@ -3,6 +3,5 @@ from django.contrib import admin
from models import HRApplication
from models import HRApplicationComment
admin.site.register(HRApplication)
admin.site.register(HRApplicationComment)

11
hrapplications/forms.py Normal file → Executable file
View File

@@ -17,4 +17,13 @@ class HRApplicationForm(forms.Form):
corp = forms.ChoiceField(choices=allchoices, required=True, label="Corp")
is_a_spi = forms.ChoiceField(choices=[('Yes', 'Yes'), ('No', 'No')], required=True, label='Are you a spy?')
about = forms.CharField(widget=forms.Textarea, required=False, label="About You")
extra = forms.CharField(widget=forms.Textarea, required=False, label="Extra Application Info")
extra = forms.CharField(widget=forms.Textarea, required=False, label="Extra Application Info")
class HRApplicationCommentForm(forms.Form):
app_id = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'True'}))
comment = forms.CharField(widget=forms.Textarea, required=False, label="Comment", max_length=254)
class HRApplicationSearchForm(forms.Form):
search_string = forms.CharField(max_length=254, required=True, label="Search String")

14
hrapplications/models.py Normal file → Executable file
View File

@@ -2,6 +2,7 @@ from django.db import models
from django.contrib.auth.models import User
from eveonline.models import EveCorporationInfo
from eveonline.models import EveCharacter
class HRApplication(models.Model):
@@ -15,12 +16,19 @@ class HRApplication(models.Model):
corp = models.ForeignKey(EveCorporationInfo)
user = models.ForeignKey(User)
approved_denied = models.NullBooleanField(blank=True, null=True)
reviewer_user = models.ForeignKey(User, blank=True, null=True, related_name="review_user")
reviewer_character = models.ForeignKey(EveCharacter, blank=True, null=True)
def __str__(self):
return self.character_name + " - Application"
class HRApplicationComment(models.Model):
date = models.DateTimeField(auto_now=True)
comment = models.TextField(default="")
comment = models.CharField(max_length=254, default="")
application = models.ForeignKey(HRApplication)
commenter_user = models.ForeignKey(User)
commenter_character = models.ForeignKey(EveCharacter)
user = models.ForeignKey(User)
def __str__(self):
return str(self.application.character_name) + " - Comment"

107
hrapplications/views.py Normal file → Executable file
View File

@@ -5,7 +5,10 @@ from django.contrib.auth.decorators import login_required
from django.shortcuts import HttpResponseRedirect
from models import HRApplication
from models import HRApplicationComment
from forms import HRApplicationForm
from forms import HRApplicationCommentForm
from forms import HRApplicationSearchForm
from eveonline.models import EveCorporationInfo
from eveonline.models import EveCharacter
from authentication.models import AuthServicesInfo
@@ -24,13 +27,11 @@ def hr_application_management_view(request):
if auth_info.main_char_id != "":
main_char = EveCharacter.objects.get(character_id=auth_info.main_char_id)
corp = EveCorporationInfo.objects.get(corporation_id=main_char.corporation_id)
corp_applications = HRApplication.objects.filter(corp=corp)
corp_applications = HRApplication.objects.filter(corp=corp).filter(approved_denied=None)
if HRApplication.objects.filter(user=request.user).exists():
personal_app = HRApplication.objects.get(user=request.user)
context = {'personal_app': personal_app,
'applications': corp_applications}
context = {'personal_apps': HRApplication.objects.all().filter(user=request.user),
'applications': corp_applications,
'search_form': HRApplicationSearchForm()}
return render_to_response('registered/hrapplicationmanagement.html',
context, context_instance=RequestContext(request))
@@ -63,10 +64,13 @@ def hr_application_create_view(request):
@login_required
def hr_application_personal_view(request):
if HRApplication.objects.filter(user=request.user).exists():
application = HRApplication.objects.get(user=request.user)
def hr_application_personal_view(request, app_id):
if HRApplication.objects.filter(id=app_id).exists():
application = HRApplication.objects.get(id=app_id)
if application.user != request.user:
application = HRApplication()
else:
application = HRApplication()
context = {'application': application}
return render_to_response('registered/hrapplicationview.html',
@@ -74,10 +78,11 @@ def hr_application_personal_view(request):
@login_required
def hr_application_personal_removal(request):
if HRApplication.objects.filter(user=request.user).exists():
application = HRApplication.objects.get(user=request.user)
application.delete()
def hr_application_personal_removal(request, app_id):
if HRApplication.objects.filter(id=app_id).exists():
application = HRApplication.objects.get(id=app_id)
if application.user == request.user:
application.delete()
return HttpResponseRedirect("/hr_application_management/")
@@ -85,10 +90,29 @@ def hr_application_personal_removal(request):
@login_required
@permission_required('auth.human_resources')
def hr_application_view(request, app_id):
if request.method == 'POST':
form = HRApplicationCommentForm(request.POST)
if form.is_valid():
auth_info = AuthServicesInfo.objects.get(user=request.user)
comment = HRApplicationComment()
comment.application = HRApplication.objects.get(id=int(form.cleaned_data['app_id']))
comment.commenter_user = request.user
comment.commenter_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
comment.comment = form.cleaned_data['comment']
comment.save()
else:
form = HRApplicationCommentForm()
if HRApplication.objects.filter(id=app_id).exists():
application = HRApplication.objects.get(id=app_id)
comments = HRApplicationComment.objects.all().filter(application=application)
else:
application = HRApplication()
comments = []
context = {'application': application}
context = {'application': application, 'comments': comments, 'comment_form': form}
return render_to_response('registered/hrapplicationview.html',
context, context_instance=RequestContext(request))
@@ -102,4 +126,55 @@ def hr_application_remove(request, app_id):
if application:
application.delete()
return HttpResponseRedirect("/hr_application_management/")
return HttpResponseRedirect("/hr_application_management/")
@login_required
@permission_required('auth.human_resources')
def hr_application_approve(request, app_id):
if HRApplication.objects.filter(id=app_id).exists():
auth_info = AuthServicesInfo.objects.get(user=request.user)
application = HRApplication.objects.get(id=app_id)
application.approved_denied = True
application.reviewer_user = request.user
application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
application.save()
return HttpResponseRedirect("/hr_application_management/")
@login_required
@permission_required('auth.human_resources')
def hr_application_reject(request, app_id):
if HRApplication.objects.filter(id=app_id).exists():
auth_info = AuthServicesInfo.objects.get(user=request.user)
application = HRApplication.objects.get(id=app_id)
application.approved_denied = False
application.reviewer_user = request.user
application.reviewer_character = EveCharacter.objects.get(character_id=auth_info.main_char_id)
application.save()
return HttpResponseRedirect("/hr_application_management/")
@login_required
@permission_required('auth.human_resources')
def hr_application_search(request):
if request.method == 'POST':
form = HRApplicationSearchForm(request.POST)
if form.is_valid():
# Really dumb search and only checks character name
# This can be improved but it does the job for now
searchstring = form.cleaned_data['search_string']
applications = []
for application in HRApplication.objects.all():
if searchstring in application.character_name:
applications.append(application)
context = {'applications': applications, 'search_form': HRApplicationSearchForm()}
return render_to_response('registered/hrapplicationsearchview.html',
context, context_instance=RequestContext(request))
else:
return HttpResponseRedirect("/hr_application_management/")