mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 14:00:17 +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 GroupDescription
|
||||||
from models import GroupRequest
|
from models import GroupRequest
|
||||||
from models import HiddenGroup
|
from models import HiddenGroup
|
||||||
|
from models import OpenGroup
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(GroupDescription)
|
admin.site.register(GroupDescription)
|
||||||
admin.site.register(GroupRequest)
|
admin.site.register(GroupRequest)
|
||||||
admin.site.register(HiddenGroup)
|
admin.site.register(HiddenGroup)
|
||||||
|
admin.site.register(OpenGroup)
|
||||||
|
@ -28,3 +28,9 @@ class HiddenGroup(models.Model):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.group.name + " - Hidden"
|
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 GroupDescription
|
||||||
from models import GroupRequest
|
from models import GroupRequest
|
||||||
from models import HiddenGroup
|
from models import HiddenGroup
|
||||||
|
from models import OpenGroup
|
||||||
from authentication.managers import AuthServicesInfoManager
|
from authentication.managers import AuthServicesInfoManager
|
||||||
from eveonline.managers import EveManager
|
from eveonline.managers import EveManager
|
||||||
|
|
||||||
@ -145,10 +146,15 @@ def groups_view(request):
|
|||||||
@login_required
|
@login_required
|
||||||
def group_request_add(request, group_id):
|
def group_request_add(request, group_id):
|
||||||
logger.debug("group_request_add called by user %s for group id %s" % (request.user, 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)
|
auth_info = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||||
grouprequest = GroupRequest()
|
grouprequest = GroupRequest()
|
||||||
grouprequest.status = 'pending'
|
grouprequest.status = 'pending'
|
||||||
grouprequest.group = Group.objects.get(id=group_id)
|
grouprequest.group = group
|
||||||
grouprequest.user = request.user
|
grouprequest.user = request.user
|
||||||
grouprequest.main_char = EveManager.get_character_by_id(auth_info.main_char_id)
|
grouprequest.main_char = EveManager.get_character_by_id(auth_info.main_char_id)
|
||||||
grouprequest.leave_request = False
|
grouprequest.leave_request = False
|
||||||
@ -161,10 +167,15 @@ def group_request_add(request, group_id):
|
|||||||
@login_required
|
@login_required
|
||||||
def group_request_leave(request, group_id):
|
def group_request_leave(request, group_id):
|
||||||
logger.debug("group_request_leave called by user %s for group id %s" % (request.user, 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)
|
auth_info = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||||
grouprequest = GroupRequest()
|
grouprequest = GroupRequest()
|
||||||
grouprequest.status = 'pending'
|
grouprequest.status = 'pending'
|
||||||
grouprequest.group = Group.objects.get(id=group_id)
|
grouprequest.group = group
|
||||||
grouprequest.user = request.user
|
grouprequest.user = request.user
|
||||||
grouprequest.main_char = EveManager.get_character_by_id(auth_info.main_char_id)
|
grouprequest.main_char = EveManager.get_character_by_id(auth_info.main_char_id)
|
||||||
grouprequest.leave_request = True
|
grouprequest.leave_request = True
|
||||||
|
@ -106,7 +106,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% 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>
|
<li>
|
||||||
<a {% ifequal request.path "/hr_application_management/" %}
|
<a {% ifequal request.path "/hr_application_management/" %}
|
||||||
class="active" {% endifequal %}
|
class="active" {% endifequal %}
|
||||||
|
@ -170,7 +170,7 @@
|
|||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
{% ifequal authinfo.teamspeak3_uid "" %}
|
{% ifequal authinfo.teamspeak3_uid "" %}
|
||||||
{% else %}
|
{% 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>
|
Link</a>
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
</td>
|
</td>
|
||||||
|
@ -120,7 +120,105 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</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>
|
<h4><b>Future Timers</b></h4>
|
||||||
<table class="table table-bordered">
|
<table class="table table-bordered">
|
||||||
<tr>
|
<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);
|
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 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);
|
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)])
|
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)])
|
minutes_left = forms.IntegerField(required=True, label="Minutes Remaining", validators=[MinValueValidator(0), MaxValueValidator(59)])
|
||||||
important = forms.BooleanField(label="Important", required=False)
|
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)
|
important = models.BooleanField(default=False)
|
||||||
eve_character = models.ForeignKey(EveCharacter)
|
eve_character = models.ForeignKey(EveCharacter)
|
||||||
eve_corp = models.ForeignKey(EveCorporationInfo)
|
eve_corp = models.ForeignKey(EveCorporationInfo)
|
||||||
|
corp_timer = models.BooleanField(default=False)
|
||||||
user = models.ForeignKey(User)
|
user = models.ForeignKey(User)
|
||||||
|
@ -26,14 +26,25 @@ def timer_util_test(user):
|
|||||||
@permission_required('auth.timer_view')
|
@permission_required('auth.timer_view')
|
||||||
def timer_view(request):
|
def timer_view(request):
|
||||||
logger.debug("timer_view called by user %s" % request.user)
|
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()
|
timer_list = Timer.objects.all()
|
||||||
closest_timer = None
|
closest_timer = None
|
||||||
if timer_list:
|
if timer_list:
|
||||||
closest_timer = \
|
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]
|
0]
|
||||||
logger.debug("Determined closest timer is %s" % closest_timer)
|
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}
|
'closest_timer': closest_timer}
|
||||||
|
|
||||||
return render_to_response('registered/timermanagement.html', render_items, context_instance=RequestContext(request))
|
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.objective = form.cleaned_data['objective']
|
||||||
timer.eve_time = eve_time
|
timer.eve_time = eve_time
|
||||||
timer.important = form.cleaned_data['important']
|
timer.important = form.cleaned_data['important']
|
||||||
|
timer.corp_timer = form.cleaned_data['corp_timer']
|
||||||
timer.eve_character = character
|
timer.eve_character = character
|
||||||
timer.eve_corp = corporation
|
timer.eve_corp = corporation
|
||||||
timer.user = request.user
|
timer.user = request.user
|
||||||
|
Loading…
x
Reference in New Issue
Block a user