diff --git a/alliance_auth/urls.py b/alliance_auth/urls.py index ac9a4b7a..df55ebff 100644 --- a/alliance_auth/urls.py +++ b/alliance_auth/urls.py @@ -65,6 +65,14 @@ urlpatterns = patterns('', name="auth_hrapplications_view"), url(r'^hr_application_create/', 'hrapplications.views.hr_application_create_view', name="auth_hrapplication_create_view"), + url(r'^hr_application_remove/(\w+)', 'hrapplications.views.hr_application_remove', + name="auth_hrapplication_remove"), + url(r'hr_application_view/(\w+)', 'hrapplications.views.hr_application_view', + name="auth_hrapplication_view"), + url(r'hr_application_personal_view/', 'hrapplications.views.hr_application_personal_view', + name="auth_hrapplication_personal_view"), + url(r'hr_application_personal_removal/', 'hrapplications.views.hr_application_personal_removal', + name="auth_hrapplication_personal_removal"), # Service Urls url(r'^services/', 'services.views.services_view', name='auth_services'), diff --git a/hrapplications/admin.py b/hrapplications/admin.py index d46bc783..f7616085 100644 --- a/hrapplications/admin.py +++ b/hrapplications/admin.py @@ -1,8 +1,8 @@ from django.contrib import admin -from models import HRApplications +from models import HRApplication from models import HRApplicationComment -admin.site.register(HRApplications) +admin.site.register(HRApplication) admin.site.register(HRApplicationComment) \ No newline at end of file diff --git a/hrapplications/forms.py b/hrapplications/forms.py index d027f32a..fc54c7fa 100644 --- a/hrapplications/forms.py +++ b/hrapplications/forms.py @@ -1,11 +1,17 @@ from django import forms +from eveonline.models import EveCorporationInfo + class HRApplicationForm(forms.Form): + allchoices = [] + for corp in EveCorporationInfo.objects.all(): + allchoices.append((str(corp.corporation_id), str(corp.corporation_name))) + character_name = forms.CharField(max_length=254, required=True, label="Main Character Name") full_api_id = forms.CharField(max_length=254, required=True, label="API ID") full_api_key = forms.CharField(max_length=254, required=True, label="API Verification Code") - preferred_corp = forms.CharField(max_length=254, required=True, label="Preferred Corp") + 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") \ No newline at end of file diff --git a/hrapplications/models.py b/hrapplications/models.py index 4c9bff89..47f0fa5b 100644 --- a/hrapplications/models.py +++ b/hrapplications/models.py @@ -1,18 +1,23 @@ from django.db import models from django.contrib.auth.models import User +from eveonline.models import EveCorporationInfo -class HRApplications(models.Model): + +class HRApplication(models.Model): character_name = models.CharField(max_length=254, default="") full_api_id = models.CharField(max_length=254, default="") full_api_key = models.CharField(max_length=254, default="") - preferred_corp = models.CharField(max_length=254, default="") is_a_spi = models.CharField(max_length=254, default="") about = models.TextField(default="") extra = models.TextField(default="") + corp = models.ForeignKey(EveCorporationInfo) user = models.ForeignKey(User) + def __str__(self): + return self.character_name + " - Application" + class HRApplicationComment(models.Model): date = models.DateTimeField(auto_now=True) diff --git a/hrapplications/views.py b/hrapplications/views.py index f2ae8fc3..dc576b4b 100644 --- a/hrapplications/views.py +++ b/hrapplications/views.py @@ -1,13 +1,36 @@ from django.template import RequestContext from django.shortcuts import render_to_response +from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import login_required +from django.shortcuts import HttpResponseRedirect +from models import HRApplication from forms import HRApplicationForm +from eveonline.models import EveCorporationInfo +from eveonline.models import EveCharacter +from authentication.models import AuthServicesInfo @login_required def hr_application_management_view(request): - context = {} + personal_app = None + corp_applications = None + + if request.user.is_superuser: + corp_applications = HRApplication.objects.all() + else: + # Get the corp the member is in + auth_info = AuthServicesInfo.objects.get(user=request.user) + 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) + + if HRApplication.objects.filter(user=request.user).exists(): + personal_app = HRApplication.objects.get(user=request.user) + + context = {'personal_app': personal_app, + 'applications': corp_applications} return render_to_response('registered/hrapplicationmanagement.html', context, context_instance=RequestContext(request)) @@ -15,13 +38,68 @@ def hr_application_management_view(request): @login_required def hr_application_create_view(request): + success = False + if request.method == 'POST': form = HRApplicationForm(request.POST) if form.is_valid(): - pass + application = HRApplication() + application.user = request.user + application.character_name = form.cleaned_data['character_name'] + application.full_api_id = form.cleaned_data['full_api_id'] + application.full_api_key = form.cleaned_data['full_api_key'] + application.corp = EveCorporationInfo.objects.get(corporation_id=form.cleaned_data['corp']) + application.is_a_spi = form.cleaned_data['is_a_spi'] + application.about = form.cleaned_data['about'] + application.extra = form.cleaned_data['extra'] + application.save() + success = True else: - form = HRApplicationForm + form = HRApplicationForm() - context = {'form': form} + context = {'form': form, 'success': success} return render_to_response('registered/hrcreateapplication.html', - context, context_instance=RequestContext(request)) \ No newline at end of file + context, context_instance=RequestContext(request)) + + +@login_required +def hr_application_personal_view(request): + if HRApplication.objects.filter(user=request.user).exists(): + application = HRApplication.objects.get(user=request.user) + + context = {'application': application} + + return render_to_response('registered/hrapplicationview.html', + context, context_instance=RequestContext(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() + + return HttpResponseRedirect("/hr_application_management/") + + +@login_required +@permission_required('auth.human_resources') +def hr_application_view(request, app_id): + if HRApplication.objects.filter(id=app_id).exists(): + application = HRApplication.objects.get(id=app_id) + + context = {'application': application} + + return render_to_response('registered/hrapplicationview.html', + context, context_instance=RequestContext(request)) + + +@login_required +@permission_required('auth.human_resources') +def hr_application_remove(request, app_id): + if HRApplication.objects.filter(id=app_id).exists(): + application = HRApplication.objects.get(id=app_id) + if application: + application.delete() + + return HttpResponseRedirect("/hr_application_management/") \ No newline at end of file diff --git a/templates/public/base.html b/templates/public/base.html index f537c5f1..fdf04e6f 100644 --- a/templates/public/base.html +++ b/templates/public/base.html @@ -91,11 +91,14 @@ href="{% url 'auth_help' %}"> Help + + {% if not perms.auth.alliance_member or perms.auth.human_resources %}
Application ID | +Username | +Main Character | +Corporation | +Actions | +
---|---|---|---|---|
{{ personal_app.id }} | +{{ personal_app.user.username }} | +{{ personal_app.character_name }} | +{{ personal_app.corp.corporation_name }} | ++ + + + + + + | +