mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 22:10:16 +02:00
Merge pull request #180 from Adarnof/requests
Closes #170 #169 #137 #181
This commit is contained in:
commit
c8df2ad453
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -106,7 +106,7 @@
|
||||
</li>
|
||||
{% 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 %}
|
||||
<li>
|
||||
<a {% ifequal request.path "/hr_application_management/" %}
|
||||
class="active" {% endifequal %}
|
||||
|
@ -170,7 +170,7 @@
|
||||
<td class="text-center">
|
||||
{% ifequal authinfo.teamspeak3_uid "" %}
|
||||
{% else %}
|
||||
<a href="ts3server://{{ TEAMSPEAK3_PUBLIC_URL }}?token={{ authinfo.teamspeak3_perm_key }}">Teamspeak3
|
||||
<a href="ts3server://{{ TEAMSPEAK3_PUBLIC_URL }}?token={{ authinfo.teamspeak3_perm_key }}&nickname={{ authinfo.teamspeak3_uid }}">Teamspeak3
|
||||
Link</a>
|
||||
{% endifequal %}
|
||||
</td>
|
||||
|
@ -120,7 +120,105 @@
|
||||
{% endif %}
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{% if corp_timers %}
|
||||
<h4><b>Corp Timers</b></h4>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<th style="width:150px" class="text-center">Details</th>
|
||||
<th class="text-center">Objective</th>
|
||||
<th class="text-center">System</th>
|
||||
<th class="text-center">Structure</th>
|
||||
<th class="text-center">Eve Time</th>
|
||||
<th class="text-center">Local Time</th>
|
||||
<th class="text-center">Creator</th>
|
||||
{% if perms.auth.timer_management %}
|
||||
<th class="text-center">Action</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% for timer in corp_timers %}
|
||||
{% ifequal timer.important True %}
|
||||
<tr class="danger">
|
||||
{% else %}
|
||||
<tr class="info">
|
||||
{% endifequal %}
|
||||
<td style="width:150px" class="text-center">{{ timer.details }}</td>
|
||||
<td class="text-center">
|
||||
{% ifequal timer.objective "Hostile" %}
|
||||
<div class="label label-danger">
|
||||
Hostile
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.objective "Friendly" %}
|
||||
<div class="label label-primary">
|
||||
Friendly
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.objective "Neutral" %}
|
||||
<div class="label label-default">
|
||||
Neutral
|
||||
</div>
|
||||
{% endifequal %}
|
||||
</td>
|
||||
<td class="text-center"><a
|
||||
href="http://evemaps.dotlan.net/system/{{ timer.system }}">{{ timer.system }} {{ timer.planet_moon }} </a>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{% ifequal timer.structure "I-HUB" %}
|
||||
<div class="label label-warning">
|
||||
I-HUB
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.structure "POCO" %}
|
||||
<div class="label label-success">
|
||||
POCO
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.structure "POS[S]" %}
|
||||
<div class="label label-info">
|
||||
POS [S]
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.structure "POS[M]" %}
|
||||
<div class="label label-info">
|
||||
POS [M]
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.structure "POS[L]" %}
|
||||
<div class="label label-info">
|
||||
POS [L]
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.structure "Station" %}
|
||||
<div class="label label-danger">
|
||||
Station
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.structure "TCU" %}
|
||||
<div class="label label-danger">
|
||||
TCU
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% ifequal timer.structure "Other" %}
|
||||
<div class="label label-default">
|
||||
Other
|
||||
</div>
|
||||
{% endifequal %}
|
||||
</td>
|
||||
<td class="text-center" nowrap>{{ timer.eve_time | date:"Y-m-d H:i" }}</td>
|
||||
<td class="text-center" nowrap><div id="countdown{{ timer.id }}"></div></td>
|
||||
<td class="text-center">{{ timer.eve_character.character_name }}</td>
|
||||
{% if perms.auth.timer_management %}
|
||||
<td class="text-center">
|
||||
<a href="/remove_timer/{{ timer.id }}">
|
||||
<button type="button" class="btn btn-danger"><span
|
||||
class="glyphicon glyphicon-remove"></span></button>
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
<h4><b>Future Timers</b></h4>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
@ -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 + "<BR>" + 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 + "<BR>" + 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 + "<BR>" + countdown(targetDate{{ timer.id }}).toString();}}, 1000);{% endfor %}
|
||||
|
||||
setInterval(function(){updateClock()}, 1000);
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user