diff --git a/README.md b/README.md index 46ea6aee..7b8164f2 100755 --- a/README.md +++ b/README.md @@ -95,6 +95,7 @@ Special Permissions In Admin: auth | user | blue_member ( Auto Added to people who register has a blue when adding api key) auth | user | corp_stats (View basic corp auth stats *who is authed etc*) auth | user | timer_management ( Access to create and remove timers) + auth | user | srp_management ( Allows for an individual to create and remove srp fleets and fleet data) Beta Testers/ Bug Fixers: diff --git a/alliance_auth/settings.py.example b/alliance_auth/settings.py.example index cbcd7b06..d6c11364 100755 --- a/alliance_auth/settings.py.example +++ b/alliance_auth/settings.py.example @@ -53,6 +53,7 @@ INSTALLED_APPS = ( 'groupmanagement', 'hrapplications', 'timerboard', + 'srp', ) MIDDLEWARE_CLASSES = ( diff --git a/alliance_auth/urls.py b/alliance_auth/urls.py index b2663708..313265c8 100755 --- a/alliance_auth/urls.py +++ b/alliance_auth/urls.py @@ -81,6 +81,9 @@ urlpatterns = patterns('', name="auth_hrapplication_reject"), url(r'hr_application_search/', 'hrapplications.views.hr_application_search', name="auth_hrapplication_search"), + url(r'hr_mark_in_progress/(\w+)', 'hrapplications.views.hr_application_mark_in_progress', + name="auth_hrapplication_mark_in_progress"), + # Service Urls url(r'^services/', 'services.views.services_view', name='auth_services'), @@ -130,4 +133,13 @@ urlpatterns = patterns('', url(r'^timers/$', 'timerboard.views.timer_view', name='auth_timer_view'), url(r'^add_timer/$', 'timerboard.views.add_timer_view', name='auth_add_timer_view'), url(r'^remove_timer/(\w+)', 'timerboard.views.remove_timer', name='auth_remove_timer'), + + # SRP URLS + url(r'^srp/$', 'srp.views.srp_management', name='auth_srp_management_view'), + url(r'^srp_fleet_view/(\w+)$', 'srp.views.srp_fleet_view', name='auth_srp_fleet_view'), + url(r'^srp_fleet_add_view/$', 'srp.views.srp_fleet_add_view', name='auth_srp_fleet_add_view'), + url(r'^srp_fleet_remove/(\w+)$', 'srp.views.srp_fleet_remove', name='auth_srp_flet_remove'), + url(r'^srp_request/(\w+)', 'srp.views.srp_request_view', name='auth_srp_request_view'), + url(r'^srp_request_remove/(\w+)', 'srp.views.srp_request_remove', + name="auth_srp_request_remove"), ) \ No newline at end of file diff --git a/hrapplications/models.py b/hrapplications/models.py index b37173db..68fd06b4 100755 --- a/hrapplications/models.py +++ b/hrapplications/models.py @@ -19,6 +19,8 @@ class HRApplication(models.Model): 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) + reviewer_inprogress_character = models.ForeignKey(EveCharacter, blank=True, null=True, + related_name="inprogress_character") def __str__(self): return self.character_name + " - Application" diff --git a/hrapplications/views.py b/hrapplications/views.py index 0d1676d5..a3951e33 100755 --- a/hrapplications/views.py +++ b/hrapplications/views.py @@ -177,4 +177,16 @@ def hr_application_search(request): return render_to_response('registered/hrapplicationsearchview.html', context, context_instance=RequestContext(request)) else: - return HttpResponseRedirect("/hr_application_management/") \ No newline at end of file + return HttpResponseRedirect("/hr_application_management/") + + +@login_required +@permission_required('auth.human_resources') +def hr_application_mark_in_progress(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.reviewer_inprogress_character = EveCharacter.objects.get(character_id=auth_info.main_char_id) + application.save() + + return HttpResponseRedirect("/hr_application_view/" + str(app_id)) diff --git a/portal/views.py b/portal/views.py index 5af18fc1..7ee8e625 100755 --- a/portal/views.py +++ b/portal/views.py @@ -7,7 +7,6 @@ from authentication.managers import AuthServicesInfoManager - # Create your views here. def index_view(request): return render_to_response('public/index.html', None, context_instance=RequestContext(request)) diff --git a/srp/__init__.py b/srp/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/srp/admin.py b/srp/admin.py new file mode 100755 index 00000000..5ddca89d --- /dev/null +++ b/srp/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +from models import SrpFleetMain +from models import SrpUserRequest + +# Register your models here. +admin.site.register(SrpFleetMain) +admin.site.register(SrpUserRequest) \ No newline at end of file diff --git a/srp/form.py b/srp/form.py new file mode 100755 index 00000000..9bef65a9 --- /dev/null +++ b/srp/form.py @@ -0,0 +1,12 @@ +from django import forms + + +class SrpFleetMainForm(forms.Form): + fleet_name = forms.CharField(required=True, label="Fleet Name") + fleet_time = forms.DateTimeField(required=True, label="Fleet Time") + fleet_doctrine = forms.CharField(required=True, label="Fleet Doctrine") + + +class SrpFleetUserRequestForm(forms.Form): + killboard_link = forms.CharField(required=True, label="Killboard Link") + additional_info = forms.CharField(required=False, label="Additional Info") \ No newline at end of file diff --git a/srp/models.py b/srp/models.py new file mode 100755 index 00000000..522906fd --- /dev/null +++ b/srp/models.py @@ -0,0 +1,24 @@ +from django.db import models + +from eveonline.models import EveCharacter + + +class SrpFleetMain(models.Model): + fleet_name = models.CharField(max_length=254, default="") + fleet_doctrine = models.CharField(max_length=254, default="") + fleet_time = models.DateTimeField() + fleet_srp_code = models.CharField(max_length=254, default="", unique=True) + fleet_commander = models.ForeignKey(EveCharacter) + + def __str__(self): + return self.fleet_name + " - SrpFleetMain" + + +class SrpUserRequest(models.Model): + killboard_link = models.CharField(max_length=254, default="") + additional_info = models.CharField(max_length=254, default="") + character = models.ForeignKey(EveCharacter) + srp_fleet_main = models.ForeignKey(SrpFleetMain) + + def __str__(self): + return self.character.character_name + " - SrpUserRequest" \ No newline at end of file diff --git a/srp/tests.py b/srp/tests.py new file mode 100755 index 00000000..a39b155a --- /dev/null +++ b/srp/tests.py @@ -0,0 +1 @@ +# Create your tests here. diff --git a/srp/views.py b/srp/views.py new file mode 100755 index 00000000..ce6f8930 --- /dev/null +++ b/srp/views.py @@ -0,0 +1,133 @@ +from django.template import RequestContext +from django.http import HttpResponseRedirect +from django.shortcuts import render_to_response +from django.contrib.auth.decorators import login_required +from django.contrib.auth.decorators import permission_required +from django.contrib.auth.decorators import user_passes_test + +from util import random_string +from eveonline.managers import EveManager +from authentication.managers import AuthServicesInfoManager +from util import check_if_user_has_permission +from models import SrpFleetMain +from models import SrpUserRequest +from form import SrpFleetMainForm +from form import SrpFleetUserRequestForm + + +def srp_util_test(user): + return check_if_user_has_permission(user, 'alliance_member') or check_if_user_has_permission(user, 'blue_member') + + +@login_required +@user_passes_test(srp_util_test) +def srp_management(request): + context = {"srpfleets": SrpFleetMain.objects.all()} + return render_to_response('registered/srpmanagement.html', context, context_instance=RequestContext(request)) + + +@login_required +@user_passes_test(srp_util_test) +def srp_fleet_view(request, fleet_id): + if SrpFleetMain.objects.filter(id=fleet_id): + fleet_main = SrpFleetMain.objects.get(id=fleet_id) + context = {"srpfleetrequests": SrpUserRequest.objects.filter(srp_fleet_main=fleet_main)} + + return render_to_response('registered/srpfleetdata.html', context, context_instance=RequestContext(request)) + + else: + return HttpResponseRedirect("/srp") + + +@login_required +@permission_required('auth.srp_management') +def srp_fleet_add_view(request): + completed = False + completed_srp_code = "" + + if request.method == 'POST': + form = SrpFleetMainForm(request.POST) + + if form.is_valid(): + authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) + character = EveManager.get_character_by_id(authinfo.main_char_id) + + srp_fleet_main = SrpFleetMain() + srp_fleet_main.fleet_name = form.cleaned_data['fleet_name'] + srp_fleet_main.fleet_doctrine = form.cleaned_data['fleet_doctrine'] + srp_fleet_main.fleet_time = form.cleaned_data['fleet_time'] + srp_fleet_main.fleet_srp_code = random_string(8) + srp_fleet_main.fleet_commander = character + + srp_fleet_main.save() + + completed = True + completed_srp_code = srp_fleet_main.fleet_srp_code + + else: + form = SrpFleetMainForm() + + render_items = {'form': form, "completed": completed, "completed_srp_code": completed_srp_code} + + return render_to_response('registered/srpfleetadd.html', render_items, context_instance=RequestContext(request)) + + +@login_required +@permission_required('auth.srp_management') +def srp_fleet_remove(request, fleet_id): + if SrpFleetMain.objects.filter(id=fleet_id).exists(): + srpfleetmain = SrpFleetMain.objects.get(id=fleet_id) + srpfleetmain.delete() + + return HttpResponseRedirect("/srp") + + +@login_required +@user_passes_test(srp_util_test) +def srp_request_view(request, fleet_srp): + completed = False + no_srp_code = False + srp_code = "" + + if SrpFleetMain.objects.filter(fleet_srp_code=fleet_srp).exists() is False: + no_srp_code = True + + if request.method == 'POST': + form = SrpFleetUserRequestForm(request.POST) + + if form.is_valid(): + authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) + character = EveManager.get_character_by_id(authinfo.main_char_id) + srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp) + + srp_request = SrpUserRequest() + srp_request.killboard_link = form.cleaned_data['killboard_link'] + srp_request.additional_info = form.cleaned_data['additional_info'] + srp_request.character = character + srp_request.srp_fleet_main = srp_fleet_main + srp_request.save() + + completed = True + + else: + form = SrpFleetUserRequestForm() + + render_items = {'form': form, "completed": completed, "no_srp_code": no_srp_code} + + return render_to_response('registered/srpfleetrequest.html', render_items, context_instance=RequestContext(request)) + + +@login_required +@permission_required('auth.srp_management') +def srp_request_remove(request, srp_request_id): + stored_fleet_view = None + + if SrpUserRequest.objects.filter(id=srp_request_id).exists(): + srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id) + stored_fleet_view = srpuserrequest.srp_fleet_main.id + srpuserrequest.delete() + + if stored_fleet_view is None: + return HttpResponseRedirect("/srp") + else: + return HttpResponseRedirect("/srp_fleet_view/" + str(stored_fleet_view)) \ No newline at end of file diff --git a/templates/public/base.html b/templates/public/base.html index ff0e5e83..0c4c76a7 100755 --- a/templates/public/base.html +++ b/templates/public/base.html @@ -63,17 +63,19 @@ href="{% url 'auth_dashboard' %}"> Dashboard -
Pilot Name | +Killboard Link | +Additional Info | + {% if perms.auth.timer_management %} +Actions | + {% endif %} +
---|---|---|---|
+
+ {{ srpfleetrequest.character.character_name }}
+
+ |
+ + {{ srpfleetrequest.killboard_link }} + | +{{ srpfleetrequest.additional_info }} | + {% if perms.auth.timer_management %} ++ + + + + | + {% endif %} +
Fleet Name | +Fleet Time | +Fleet Doctrine | +Fleet Commander | + {% if perms.auth.timer_management %} +Fleet SRP Code | + {% endif %} +Actions | +
---|---|---|---|---|---|
+
+ {{ srpfleet.fleet_name }}
+
+ |
+ {{ srpfleet.fleet_time }} | +{{ srpfleet.fleet_doctrine }} | +
+
+ {{ srpfleet.fleet_commander.character_name }}
+
+ |
+ {% if perms.auth.timer_management %}
+
+
+ {{ srpfleet.fleet_srp_code }}
+
+ |
+ {% endif %}
+ + + + + + {% if perms.auth.timer_management %} + + + + {% endif %} + | +