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 %}
  • Applications
  • + {% endif %}
  • Util
    diff --git a/templates/registered/hrapplicationmanagement.html b/templates/registered/hrapplicationmanagement.html index 762f1432..c55f5e87 100644 --- a/templates/registered/hrapplicationmanagement.html +++ b/templates/registered/hrapplicationmanagement.html @@ -9,15 +9,78 @@ {% block content %}
    -

    HR Applications + {% if not perms.auth.alliance_member %} +

    Personal Applications

    -
    -
    + + + + + + + + + {% if personal_app %} + + + + + + + + {% endif %} +
    Application IDUsernameMain CharacterCorporationActions
    {{ personal_app.id }}{{ personal_app.user.username }}{{ personal_app.character_name }}{{ personal_app.corp.corporation_name }} + + + + + + +
    + {% endif %} + {% if perms.auth.human_resources %} +

    Application Management

    +
    + + + + + + + + + {% for app in applications %} + + + + + + + + {% endfor %} +
    Application IDUsernameMain CharacterCorporationActions
    {{ app.id }}{{ app.user.username }}{{ app.character_name }}{{ app.corp.corporation_name }} + + + + + + +
    +
    + {% endif %}
    {% endblock content %} diff --git a/templates/registered/hrapplicationview.html b/templates/registered/hrapplicationview.html new file mode 100644 index 00000000..f213a583 --- /dev/null +++ b/templates/registered/hrapplicationview.html @@ -0,0 +1,88 @@ +{% extends "public/base.html" %} +{% load bootstrap %} +{% load staticfiles %} + +{% block title %}Alliance Auth - View Application{% endblock %} + +{% block page_title %}View Application{% endblock page_title %} +{% block extra_css %}{% endblock extra_css %} + +{% block content %} +
    +

    Create Application

    + +
    +
    +
    + +
    +
    +
    +
    + +{% endblock content %} diff --git a/templates/registered/hrcreateapplication.html b/templates/registered/hrcreateapplication.html index 46d953e7..61f97afc 100644 --- a/templates/registered/hrcreateapplication.html +++ b/templates/registered/hrcreateapplication.html @@ -14,12 +14,16 @@
    - + {% if success %} + + {% else %} + + {% endif %}
    diff --git a/util/__init__.py b/util/__init__.py index 8c6ddeb5..5e001527 100644 --- a/util/__init__.py +++ b/util/__init__.py @@ -7,6 +7,7 @@ def bootstrap_permissions(): ct = ContentType.objects.get_for_model(User) Permission.objects.get_or_create(codename="group_management", content_type=ct, name="group_management") Permission.objects.get_or_create(codename="jabber_broadcast", content_type=ct, name="jabber_broadcast") + Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources") def add_member_permission(user, permission):