mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-09 08:36:23 +01:00
Updated hr management to actually be useful
This commit is contained in:
1
hrapplications/admin.py
Normal file → Executable file
1
hrapplications/admin.py
Normal file → Executable 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
11
hrapplications/forms.py
Normal file → Executable 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
14
hrapplications/models.py
Normal file → Executable 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
107
hrapplications/views.py
Normal file → Executable 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/")
|
||||
Reference in New Issue
Block a user