From eb723254f286ffa491bd4809709e453b5fedc54b Mon Sep 17 00:00:00 2001 From: Raynaldo Rivera Date: Mon, 24 Nov 2014 18:03:44 -0700 Subject: [PATCH 01/17] Added ts3 lib fix --- services/managers/teamspeak3_manager.py | 1 + services/managers/util/ts3.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/services/managers/teamspeak3_manager.py b/services/managers/teamspeak3_manager.py index 141306af..a42a8217 100755 --- a/services/managers/teamspeak3_manager.py +++ b/services/managers/teamspeak3_manager.py @@ -39,6 +39,7 @@ class Teamspeak3Manager: def _group_id_by_name(groupname): server = Teamspeak3Manager.__get_created_server() group_cache = server.send_command('servergrouplist') + for group in group_cache: if group['keys']['name'] == groupname: return group['keys']['sgid'] diff --git a/services/managers/util/ts3.py b/services/managers/util/ts3.py index 9b1c55fb..f13a04ba 100755 --- a/services/managers/util/ts3.py +++ b/services/managers/util/ts3.py @@ -139,7 +139,7 @@ class TS3Proto(): v = [v[0], '='.join(v[1:])] key, value = v keys[key] = self._unescape_str(value) - elif v[0][0] == '-': + elif v[0][0] and v[0][0] == '-': # Option opts.append(v[0][1:]) else: From cce15d16677fdf130fe2b68fdad12da6b8996737 Mon Sep 17 00:00:00 2001 From: Raynaldo Rivera Date: Wed, 26 Nov 2014 22:09:57 -0700 Subject: [PATCH 02/17] Added srp program features, updated hr applications to support adding a "mark in progress" --- README.md | 1 + alliance_auth/settings.py.example | 1 + alliance_auth/urls.py | 12 ++ hrapplications/models.py | 2 + hrapplications/views.py | 14 ++- portal/views.py | 1 - srp/__init__.py | 0 srp/admin.py | 8 ++ srp/form.py | 12 ++ srp/models.py | 24 ++++ srp/tests.py | 1 + srp/views.py | 133 ++++++++++++++++++++ templates/public/base.html | 85 ++++++++----- templates/registered/hrapplicationview.html | 34 +++-- templates/registered/srpfleetadd.html | 49 ++++++++ templates/registered/srpfleetdata.html | 51 ++++++++ templates/registered/srpfleetrequest.html | 49 ++++++++ templates/registered/srpmanagement.html | 73 +++++++++++ util/__init__.py | 13 +- 19 files changed, 516 insertions(+), 47 deletions(-) create mode 100755 srp/__init__.py create mode 100755 srp/admin.py create mode 100755 srp/form.py create mode 100755 srp/models.py create mode 100755 srp/tests.py create mode 100755 srp/views.py create mode 100755 templates/registered/srpfleetadd.html create mode 100755 templates/registered/srpfleetdata.html create mode 100755 templates/registered/srpfleetrequest.html create mode 100755 templates/registered/srpmanagement.html 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 -
  • - Characters -
  • +
  • Api Keys
  • +
  • + Characters +
  • + {% if perms.auth.alliance_member %}
  • Groups
  • {% endif %} + +
  • + Help +
  • + + +
  • +
    Aux Navigation
    +
  • {% if perms.auth.alliance_member or perms.auth.blue_member %}
  • Services -
  • - -
  • - OP Timers + class="fa fa-cogs fa-fw grayiconecolor"> Alliance Services
  • {% endif %} @@ -104,11 +111,39 @@ {% endif %} -
  • - Help -
  • + {% if perms.auth.corp_stats %} +
  • + Corporation Stats +
  • + {% endif %} + + {% if perms.auth.group_management %} +
  • + Group Management +
  • + {% endif %} + + {% if perms.auth.alliance_member or perms.auth.blue_member %} + +
  • + OP Timers +
  • + + +
  • + Ship Replacement +
  • + + {% endif %} +
  • Util
    @@ -127,21 +162,6 @@ class="fa fa-space-shuttle fa-fw grayiconecolor"> Fleet Broadcast Formatter
  • {% endif %} - {% if perms.auth.corp_stats %} -
  • - Corporation Stats -
  • - {% endif %} - - {% if perms.auth.group_management %} -
  • - Group Management -
  • - {% endif %} {% if perms.auth.jabber_broadcast %}
  • @@ -151,6 +171,7 @@
  • {% endif %} + diff --git a/templates/registered/hrapplicationview.html b/templates/registered/hrapplicationview.html index 61fa288a..571a5586 100755 --- a/templates/registered/hrapplicationview.html +++ b/templates/registered/hrapplicationview.html @@ -28,21 +28,22 @@ {% endif %} +
    - {% if application.reviewer_character == None %} + {% if application.reviewer_inprogress_character == None %} {% else %} + role="alert">{{ application.reviewer_inprogress_character.character_name }}
    {% endif %}
    - +
    @@ -110,18 +111,27 @@
    +
    - - - + {% if application.reviewer_inprogress_character != None %} + + + - - - + + + - - - + + + + + {% else %} + + + + {% endif %}

    diff --git a/templates/registered/srpfleetadd.html b/templates/registered/srpfleetadd.html new file mode 100755 index 00000000..d0776353 --- /dev/null +++ b/templates/registered/srpfleetadd.html @@ -0,0 +1,49 @@ +{% extends "public/base.html" %} +{% load bootstrap %} +{% load staticfiles %} + +{% block title %}Alliance Auth - SRP Fleet Create{% endblock %} + +{% block page_title %}SRP Fleet Create{% endblock page_title %} +{% block extra_css %} + {% endblock extra_css %} + +{% block content %} + +
    +

    Create SRP Fleet

    + +
    +
    +
    + {% if completed == False %} + + {% else %} + + + + {% endif %} +
    +
    +
    + +
    + +{% endblock content %} + +{% block extra_script %} + + $('#id_fleet_time').datetimepicker({ + maskInput: true, + format: 'Y-m-d H:i',minDate:0 + }); + +{% endblock extra_script %} diff --git a/templates/registered/srpfleetdata.html b/templates/registered/srpfleetdata.html new file mode 100755 index 00000000..95a0e88e --- /dev/null +++ b/templates/registered/srpfleetdata.html @@ -0,0 +1,51 @@ +{% extends "public/base.html" %} +{% load bootstrap %} +{% load staticfiles %} + +{% block title %}Alliance Auth{% endblock %} + +{% block page_title %}Srp Fleet Data{% endblock page_title %} +{% block extra_css %}{% endblock extra_css %} + +{% block content %} +
    +
    +

    SRP Fleet Data +

    + + + + + + {% if perms.auth.timer_management %} + + {% endif %} + + {% for srpfleetrequest in srpfleetrequests %} + + + + + {% if perms.auth.timer_management %} + + {% endif %} + + {% endfor %} +
    Pilot NameKillboard LinkAdditional InfoActions
    +
    + {{ srpfleetrequest.character.character_name }} +
    +
    + {{ srpfleetrequest.killboard_link }} + {{ srpfleetrequest.additional_info }} + + + + +
    +
    +
    + +{% endblock content %} diff --git a/templates/registered/srpfleetrequest.html b/templates/registered/srpfleetrequest.html new file mode 100755 index 00000000..7a0ba37f --- /dev/null +++ b/templates/registered/srpfleetrequest.html @@ -0,0 +1,49 @@ +{% extends "public/base.html" %} +{% load bootstrap %} +{% load staticfiles %} + +{% block title %}Alliance Auth - SRP Request{% endblock %} + +{% block page_title %}SRP Request{% endblock page_title %} +{% block extra_css %} + {% endblock extra_css %} + +{% block content %} + +
    +

    Create SRP Request

    + +
    +
    +
    + {% if no_srp_code %} + + {% else %} + {% if completed == False %} + + {% else %} + + {% endif %} + {% endif %} +
    +
    +
    + +
    + +{% endblock content %} + +{% block extra_script %} + + $('#id_fleet_time').datetimepicker({ + maskInput: true, + format: 'Y-m-d H:i',minDate:0 + }); + +{% endblock extra_script %} diff --git a/templates/registered/srpmanagement.html b/templates/registered/srpmanagement.html new file mode 100755 index 00000000..6dcc0577 --- /dev/null +++ b/templates/registered/srpmanagement.html @@ -0,0 +1,73 @@ +{% extends "public/base.html" %} +{% load bootstrap %} +{% load staticfiles %} + +{% block title %}Alliance Auth{% endblock %} + +{% block page_title %}Srp Management{% endblock page_title %} +{% block extra_css %}{% endblock extra_css %} + +{% block content %} +
    +
    +

    SRP Management +
    + {% if perms.auth.timer_management %} + + + + {% endif %} +
    +

    + + + + + + + {% if perms.auth.timer_management %} + + {% endif %} + + + {% for srpfleet in srpfleets %} + + + + + + {% if perms.auth.timer_management %} + + {% endif %} + + + {% endfor %} +
    Fleet NameFleet TimeFleet DoctrineFleet CommanderFleet SRP CodeActions
    +
    + {{ srpfleet.fleet_name }} +
    +
    {{ srpfleet.fleet_time }}{{ srpfleet.fleet_doctrine }} +
    + {{ srpfleet.fleet_commander.character_name }} +
    +
    +
    + {{ srpfleet.fleet_srp_code }} +
    +
    + + + + + {% if perms.auth.timer_management %} + + + + {% endif %} +
    +
    +
    + +{% endblock content %} diff --git a/util/__init__.py b/util/__init__.py index 824043cd..c896973a 100755 --- a/util/__init__.py +++ b/util/__init__.py @@ -1,3 +1,5 @@ +import uuid + from django.contrib.contenttypes.models import ContentType from django.contrib.auth.models import User from django.contrib.auth.models import Group @@ -14,6 +16,7 @@ def bootstrap_permissions(): Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member") Permission.objects.get_or_create(codename="corp_stats", content_type=ct, name="corp_stats") Permission.objects.get_or_create(codename="timer_management", content_type=ct, name="timer_management") + Permission.objects.get_or_create(codename="srp_management", content_type=ct, name="srp_management") Group.objects.get_or_create(name=settings.DEFAULT_ALLIANCE_GROUP) Group.objects.get_or_create(name=settings.DEFAULT_BLUE_GROUP) @@ -43,4 +46,12 @@ def check_if_user_has_permission(user, permission): ct = ContentType.objects.get_for_model(User) stored_permission, created = Permission.objects.get_or_create(codename=permission, content_type=ct, name=permission) - return user.has_perm('auth.' + permission) \ No newline at end of file + return user.has_perm('auth.' + permission) + + +def random_string(string_length=10): + """Returns a random string of length string_length.""" + random = str(uuid.uuid4()) # Convert UUID format to a Python string. + random = random.upper() # Make all characters uppercase. + random = random.replace("-", "") # Remove the UUID '-'. + return random[0:string_length] # Return the random string. \ No newline at end of file From d40db151db5bfbdfc5840bc9c57cdf58e97b0a70 Mon Sep 17 00:00:00 2001 From: Raynaldo Rivera Date: Wed, 26 Nov 2014 22:14:25 -0700 Subject: [PATCH 03/17] Added srp program features, updated hr applications to support adding a "mark in progress" --- templates/registered/srpfleetdata.html | 4 ++-- templates/registered/srpmanagement.html | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/registered/srpfleetdata.html b/templates/registered/srpfleetdata.html index 95a0e88e..9b95dff1 100755 --- a/templates/registered/srpfleetdata.html +++ b/templates/registered/srpfleetdata.html @@ -17,7 +17,7 @@ Pilot Name Killboard Link Additional Info - {% if perms.auth.timer_management %} + {% if perms.auth.srp_management %} Actions {% endif %} @@ -33,7 +33,7 @@ target="_blank">{{ srpfleetrequest.killboard_link }} {{ srpfleetrequest.additional_info }} - {% if perms.auth.timer_management %} + {% if perms.auth.srp_management %} diff --git a/templates/registered/srpmanagement.html b/templates/registered/srpmanagement.html index 6dcc0577..8befc2bf 100755 --- a/templates/registered/srpmanagement.html +++ b/templates/registered/srpmanagement.html @@ -12,7 +12,7 @@

    SRP Management
    - {% if perms.auth.timer_management %} + {% if perms.auth.srp_management %} @@ -25,7 +25,7 @@ Fleet Time Fleet Doctrine Fleet Commander - {% if perms.auth.timer_management %} + {% if perms.auth.srp_management %} Fleet SRP Code {% endif %} Actions @@ -57,7 +57,7 @@ class="glyphicon glyphicon-eye-open"> - {% if perms.auth.timer_management %} + {% if perms.auth.srp_management %} From ab8efdb2c1f901c9cffb095377647be2a021e729 Mon Sep 17 00:00:00 2001 From: Raynaldo Rivera Date: Wed, 26 Nov 2014 22:58:07 -0700 Subject: [PATCH 04/17] Added additional features suggested by ogopogomu --- alliance_auth/urls.py | 9 ++++ srp/models.py | 3 ++ srp/views.py | 66 ++++++++++++++++++++++++- templates/registered/srpfleetdata.html | 41 ++++++++++++++- templates/registered/srpmanagement.html | 33 +++++++++---- 5 files changed, 139 insertions(+), 13 deletions(-) diff --git a/alliance_auth/urls.py b/alliance_auth/urls.py index 313265c8..2ecc97a8 100755 --- a/alliance_auth/urls.py +++ b/alliance_auth/urls.py @@ -136,10 +136,19 @@ urlpatterns = patterns('', # SRP URLS url(r'^srp/$', 'srp.views.srp_management', name='auth_srp_management_view'), + url(r'^srp_all/$', 'srp.views.srp_management_all', name='auth_srp_management_all_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_fleet_mark_completed/(\w+)', 'srp.views.srp_fleet_mark_completed', + name='auth_srp_fleet_mark_completed'), + url(r'^srp_fleet_mark_uncompleted/(\w+)', 'srp.views.srp_fleet_mark_uncompleted', + name='auth_srp_fleet_mark_uncompleted'), 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"), + url(r'srp_request_approve/(\w+)', 'srp.views.srp_request_approve', + name='auth_srp_request_approve'), + url(r'srp_request_reject/(\w+)', 'srp.views.srp_request_reject', name='auth_srp_request_reject'), + ) \ No newline at end of file diff --git a/srp/models.py b/srp/models.py index 522906fd..a7fe3ab9 100755 --- a/srp/models.py +++ b/srp/models.py @@ -8,6 +8,7 @@ class SrpFleetMain(models.Model): fleet_doctrine = models.CharField(max_length=254, default="") fleet_time = models.DateTimeField() fleet_srp_code = models.CharField(max_length=254, default="", unique=True) + fleet_srp_status = models.CharField(max_length=254, default="") fleet_commander = models.ForeignKey(EveCharacter) def __str__(self): @@ -16,7 +17,9 @@ class SrpFleetMain(models.Model): class SrpUserRequest(models.Model): killboard_link = models.CharField(max_length=254, default="") + after_action_report_link = models.CharField(max_length=254, default="") additional_info = models.CharField(max_length=254, default="") + srp_status = models.CharField(max_length=254, default="") character = models.ForeignKey(EveCharacter) srp_fleet_main = models.ForeignKey(SrpFleetMain) diff --git a/srp/views.py b/srp/views.py index ce6f8930..c5ebe8a2 100755 --- a/srp/views.py +++ b/srp/views.py @@ -22,6 +22,13 @@ def srp_util_test(user): @login_required @user_passes_test(srp_util_test) def srp_management(request): + context = {"srpfleets": SrpFleetMain.objects.filter(fleet_srp_status="")} + return render_to_response('registered/srpmanagement.html', context, context_instance=RequestContext(request)) + + +@login_required +@user_passes_test(srp_util_test) +def srp_management_all(request): context = {"srpfleets": SrpFleetMain.objects.all()} return render_to_response('registered/srpmanagement.html', context, context_instance=RequestContext(request)) @@ -31,7 +38,8 @@ def srp_management(request): 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)} + context = {"fleet_id": fleet_id, "fleet_status": fleet_main.fleet_srp_status, + "srpfleetrequests": SrpUserRequest.objects.filter(srp_fleet_main=fleet_main)} return render_to_response('registered/srpfleetdata.html', context, context_instance=RequestContext(request)) @@ -82,6 +90,28 @@ def srp_fleet_remove(request, fleet_id): return HttpResponseRedirect("/srp") +@login_required +@permission_required('auth.srp_management') +def srp_fleet_mark_completed(request, fleet_id): + if SrpFleetMain.objects.filter(id=fleet_id).exists(): + srpfleetmain = SrpFleetMain.objects.get(id=fleet_id) + srpfleetmain.fleet_srp_status = "Completed" + srpfleetmain.save() + + return HttpResponseRedirect("/srp_fleet_view/" + str(fleet_id)) + + +@login_required +@permission_required('auth.srp_management') +def srp_fleet_mark_uncompleted(request, fleet_id): + if SrpFleetMain.objects.filter(id=fleet_id).exists(): + srpfleetmain = SrpFleetMain.objects.get(id=fleet_id) + srpfleetmain.fleet_srp_status = "" + srpfleetmain.save() + + return HttpResponseRedirect("/srp_fleet_view/" + str(fleet_id)) + + @login_required @user_passes_test(srp_util_test) def srp_request_view(request, fleet_srp): @@ -127,6 +157,40 @@ def srp_request_remove(request, 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)) + + +@login_required +@permission_required('auth.srp_management') +def srp_request_approve(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.srp_status = "Approved" + srpuserrequest.save() + + if stored_fleet_view is None: + return HttpResponseRedirect("/srp") + else: + return HttpResponseRedirect("/srp_fleet_view/" + str(stored_fleet_view)) + + +@login_required +@permission_required('auth.srp_management') +def srp_request_reject(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.srp_status = "Rejected" + srpuserrequest.save() + if stored_fleet_view is None: return HttpResponseRedirect("/srp") else: diff --git a/templates/registered/srpfleetdata.html b/templates/registered/srpfleetdata.html index 9b95dff1..5b8ac9ac 100755 --- a/templates/registered/srpfleetdata.html +++ b/templates/registered/srpfleetdata.html @@ -11,12 +11,26 @@

    SRP Fleet Data +

    + {% if perms.auth.srp_management %} {% endif %} @@ -33,12 +47,35 @@ target="_blank">{{ srpfleetrequest.killboard_link }} + {% if perms.auth.srp_management %} - {% endif %} diff --git a/templates/registered/srpmanagement.html b/templates/registered/srpmanagement.html index 8befc2bf..3f4d8984 100755 --- a/templates/registered/srpmanagement.html +++ b/templates/registered/srpmanagement.html @@ -13,8 +13,11 @@

    SRP Management
    {% if perms.auth.srp_management %} + + + - + {% endif %}
    @@ -25,9 +28,8 @@

    - {% if perms.auth.srp_management %} - - {% endif %} + + {% for srpfleet in srpfleets %} @@ -44,13 +46,24 @@ {{ srpfleet.fleet_commander.character_name }} - {% if perms.auth.timer_management %} - +
    Pilot Name Killboard Link Additional InfoStatusActions {{ srpfleetrequest.additional_info }} + {% if srpfleetrequest.srp_status == "Approved" %} +
    + Approved +
    + {% elif srpfleetrequest.srp_status == "Rejected" %} +
    + Rejected +
    + {% else %} +
    + Pending +
    + {% endif %} +
    + + + + + + + + class="glyphicon glyphicon-trash"> Fleet Time Fleet Doctrine Fleet CommanderFleet SRP CodeFleet SRP CodeSRP Status Actions
    -
    - {{ srpfleet.fleet_srp_code }} + +
    + + + {% if srpfleet.fleet_srp_status == "" %} +
    + Pending
    - - {% endif %} + {% else %} +
    + Completed +
    + {% endif %} +