From 492e39aca0946381a2d2a3fa9bb93744e1d1dd15 Mon Sep 17 00:00:00 2001 From: Adarnof Date: Thu, 10 Dec 2015 05:58:31 +0000 Subject: [PATCH 1/2] Implements requests #170 #169 #137 Timerboard doesn't populate local time for corp timers yet. --- groupmanagement/admin.py | 2 + groupmanagement/models.py | 6 ++ groupmanagement/views.py | 15 ++- stock/templates/registered/services.html | 2 +- .../templates/registered/timermanagement.html | 101 +++++++++++++++++- timerboard/form.py | 1 + timerboard/models.py | 1 + timerboard/views.py | 16 ++- 8 files changed, 138 insertions(+), 6 deletions(-) diff --git a/groupmanagement/admin.py b/groupmanagement/admin.py index c89f1c75..27e1ae99 100644 --- a/groupmanagement/admin.py +++ b/groupmanagement/admin.py @@ -3,8 +3,10 @@ from django.contrib import admin from models import GroupDescription from models import GroupRequest from models import HiddenGroup +from models import OpenGroup admin.site.register(GroupDescription) admin.site.register(GroupRequest) admin.site.register(HiddenGroup) +admin.site.register(OpenGroup) diff --git a/groupmanagement/models.py b/groupmanagement/models.py index d6ca4ffe..93776a48 100644 --- a/groupmanagement/models.py +++ b/groupmanagement/models.py @@ -28,3 +28,9 @@ class HiddenGroup(models.Model): def __str__(self): return self.group.name + " - Hidden" + +class OpenGroup(models.Model): + group = models.OneToOneField(Group) + + def __str__(self): + return self.group.name + " - Open" diff --git a/groupmanagement/views.py b/groupmanagement/views.py index c916a935..6aec1e54 100755 --- a/groupmanagement/views.py +++ b/groupmanagement/views.py @@ -9,6 +9,7 @@ from django.contrib.auth.models import Group from models import GroupDescription from models import GroupRequest from models import HiddenGroup +from models import OpenGroup from authentication.managers import AuthServicesInfoManager from eveonline.managers import EveManager @@ -145,10 +146,15 @@ def groups_view(request): @login_required def group_request_add(request, group_id): logger.debug("group_request_add called by user %s for group id %s" % (request.user, group_id)) + group = Group.objects.get(id=group_id) + if OpenGroup.objects.filter(group=group).exists(): + logger.info("%s joining %s as is an open group" % (request.user, group)) + request.user.groups.add(group) + return HttpResponseRedirect("/groups") auth_info = AuthServicesInfoManager.get_auth_service_info(request.user) grouprequest = GroupRequest() grouprequest.status = 'pending' - grouprequest.group = Group.objects.get(id=group_id) + grouprequest.group = group grouprequest.user = request.user grouprequest.main_char = EveManager.get_character_by_id(auth_info.main_char_id) grouprequest.leave_request = False @@ -161,10 +167,15 @@ def group_request_add(request, group_id): @login_required def group_request_leave(request, group_id): logger.debug("group_request_leave called by user %s for group id %s" % (request.user, group_id)) + group = Group.objects.get(id=group_id) + if OpenGroup.objects.filter(group=group).exists(): + logger.info("%s leaving %s as is an open group" % (request.user, group)) + request.user.groups.remove(group) + return HttpResponseRedirect("/groups") auth_info = AuthServicesInfoManager.get_auth_service_info(request.user) grouprequest = GroupRequest() grouprequest.status = 'pending' - grouprequest.group = Group.objects.get(id=group_id) + grouprequest.group = group grouprequest.user = request.user grouprequest.main_char = EveManager.get_character_by_id(auth_info.main_char_id) grouprequest.leave_request = True diff --git a/stock/templates/registered/services.html b/stock/templates/registered/services.html index d7b65b47..546207e8 100755 --- a/stock/templates/registered/services.html +++ b/stock/templates/registered/services.html @@ -170,7 +170,7 @@ {% ifequal authinfo.teamspeak3_uid "" %} {% else %} - Teamspeak3 + Teamspeak3 Link {% endifequal %} diff --git a/stock/templates/registered/timermanagement.html b/stock/templates/registered/timermanagement.html index fe3e08eb..3af49280 100755 --- a/stock/templates/registered/timermanagement.html +++ b/stock/templates/registered/timermanagement.html @@ -120,7 +120,105 @@ {% endif %} - + {% if corp_timers %} +

Corp Timers

+ + + + + + + + + + {% if perms.auth.timer_management %} + + {% endif %} + + {% for timer in corp_timers %} + {% ifequal timer.important True %} + + {% else %} + + {% endifequal %} + + + + + + + + {% if perms.auth.timer_management %} + + {% endif %} + + {% endfor %} +
DetailsObjectiveSystemStructureEve TimeLocal TimeCreatorAction
{{ timer.details }} + {% ifequal timer.objective "Hostile" %} +
+ Hostile +
+ {% endifequal %} + {% ifequal timer.objective "Friendly" %} +
+ Friendly +
+ {% endifequal %} + {% ifequal timer.objective "Neutral" %} +
+ Neutral +
+ {% endifequal %} +
{{ timer.system }} {{ timer.planet_moon }} + + {% ifequal timer.structure "I-HUB" %} +
+ I-HUB +
+ {% endifequal %} + {% ifequal timer.structure "POCO" %} +
+ POCO +
+ {% endifequal %} + {% ifequal timer.structure "POS[S]" %} +
+ POS [S] +
+ {% endifequal %} + {% ifequal timer.structure "POS[M]" %} +
+ POS [M] +
+ {% endifequal %} + {% ifequal timer.structure "POS[L]" %} +
+ POS [L] +
+ {% endifequal %} + {% ifequal timer.structure "Station" %} +
+ Station +
+ {% endifequal %} + {% ifequal timer.structure "TCU" %} +
+ TCU +
+ {% endifequal %} + {% ifequal timer.structure "Other" %} +
+ Other +
+ {% endifequal %} +
{{ timer.eve_time | date:"Y-m-d H:i" }}
{{ timer.eve_character.character_name }} + + + +
+ {% endif %}

Future Timers

@@ -231,6 +329,7 @@ var clock{{ timer.id }} = document.getElementById("countdown{{ timer.id }}"), ta setInterval(function(){clockClosest.innerHTML = targetDate.format('D @ h:ia'); if (targetDate > Date.now()){ clockClosest.innerHTML = clockClosest.innerHTML + "
" + countdown(targetDate).toString();}}, 1000); {% for timer in timers %}setInterval(function(){clock{{ timer.id }}.innerHTML = targetDate{{ timer.id }}.format('D @ h:ia'); if (targetDate{{ timer.id }} > Date.now()){ clock{{ timer.id }}.innerHTML = clock{{ timer.id }}.innerHTML + "
" + countdown(targetDate{{ timer.id }}).toString();}}, 1000);{% endfor %} +{% for timer in corp_timers %}setInterval(function(){clock{{ timer.id }}.innerHTML = targetDate{{ timer.id }}.format('D @ h:ia'); if (targetDate{{ timer.id }} > Date.now()){ clock{{ timer.id }}.innerHTML = clock{{ timer.id }}.innerHTML + "
" + countdown(targetDate{{ timer.id }}).toString();}}, 1000);{% endfor %} setInterval(function(){updateClock()}, 1000); diff --git a/timerboard/form.py b/timerboard/form.py index c3a83c02..78402a07 100755 --- a/timerboard/form.py +++ b/timerboard/form.py @@ -17,3 +17,4 @@ class TimerForm(forms.Form): hours_left = forms.IntegerField(required=True, label="Hours Remaining", validators=[MinValueValidator(0), MaxValueValidator(23)]) minutes_left = forms.IntegerField(required=True, label="Minutes Remaining", validators=[MinValueValidator(0), MaxValueValidator(59)]) important = forms.BooleanField(label="Important", required=False) + corp_timer = forms.BooleanField(label="Corp-Restricted", required=False) diff --git a/timerboard/models.py b/timerboard/models.py index c4ba7d96..3d27d1c8 100755 --- a/timerboard/models.py +++ b/timerboard/models.py @@ -17,4 +17,5 @@ class Timer(models.Model): important = models.BooleanField(default=False) eve_character = models.ForeignKey(EveCharacter) eve_corp = models.ForeignKey(EveCorporationInfo) + corp_timer = models.BooleanField(default=False) user = models.ForeignKey(User) diff --git a/timerboard/views.py b/timerboard/views.py index 1d9f0fbb..43b252c6 100755 --- a/timerboard/views.py +++ b/timerboard/views.py @@ -26,14 +26,25 @@ def timer_util_test(user): @permission_required('auth.timer_view') def timer_view(request): logger.debug("timer_view called by user %s" % request.user) + auth_info = AuthServicesInfoManager.get_auth_service_info(request.user) + char = EveManager.get_character_by_id(auth_info.main_char_id) + if char: + corp = EveManager.get_corporation_info_by_id(char.corporation_id) + else: + corp = None + if corp: + corp_timers = Timer.objects.all().filter(corp_timer=True).filter(eve_corp=corp) + else: + corp_timers = [] timer_list = Timer.objects.all() closest_timer = None if timer_list: closest_timer = \ - sorted(list(Timer.objects.all()), key=lambda d: abs(datetime.datetime.now() - d.eve_time.replace(tzinfo=None)))[ + sorted(list(Timer.objects.all().filter(corp_timer=False)), key=lambda d: abs(datetime.datetime.now() - d.eve_time.replace(tzinfo=None)))[ 0] logger.debug("Determined closest timer is %s" % closest_timer) - render_items = {'timers': Timer.objects.all(), + render_items = {'timers': Timer.objects.all().filter(corp_timer=False), + 'corp_timers': corp_timers, 'closest_timer': closest_timer} return render_to_response('registered/timermanagement.html', render_items, context_instance=RequestContext(request)) @@ -66,6 +77,7 @@ def add_timer_view(request): timer.objective = form.cleaned_data['objective'] timer.eve_time = eve_time timer.important = form.cleaned_data['important'] + timer.corp_timer = form.cleaned_data['corp_timer'] timer.eve_character = character timer.eve_corp = corporation timer.user = request.user From 229f34ca6a3f9bdc28297df40b3d0a9ab83d855d Mon Sep 17 00:00:00 2001 From: Adarnof Date: Thu, 10 Dec 2015 06:50:57 +0000 Subject: [PATCH 2/2] Allow blues to view hrapplications link in base.html Addresses #181 --- stock/templates/public/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stock/templates/public/base.html b/stock/templates/public/base.html index 279743d0..13374967 100755 --- a/stock/templates/public/base.html +++ b/stock/templates/public/base.html @@ -106,7 +106,7 @@ {% endif %} - {% if not perms.auth.member and not perms.auth.blue_member or perms.auth.human_resources %} + {% if not perms.auth.member or perms.auth.human_resources %}