mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
[CHANGE] Move structure label BG detection to Python instead of Django
Python is faster and needs less memory … It's also much mire readable that way.
This commit is contained in:
parent
f51523dc07
commit
c6b6443901
@ -51,69 +51,7 @@
|
|||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
{% comment %} BG: Info {% endcomment %}
|
<div class="badge bg-{{ timer.bg_modifier }}">
|
||||||
{% if timer.structure == "POCO" %}
|
|
||||||
<div class="badge bg-info">
|
|
||||||
{% elif timer.structure == "POS[S]" %}
|
|
||||||
<div class="badge bg-info">
|
|
||||||
{% elif timer.structure == "POS[M]" %}
|
|
||||||
<div class="badge bg-info">
|
|
||||||
{% elif timer.structure == "POS[L]" %}
|
|
||||||
<div class="badge bg-info">
|
|
||||||
|
|
||||||
{% comment %} BG: Warning {% endcomment %}
|
|
||||||
{% elif timer.structure == "Station" %} {% comment %} Pending Removal {% endcomment %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Orbital Skyhook" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "I-HUB" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Raitaru" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Azbel" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Athanor" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Tatara" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Pharolux Cyno Beacon" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Tenebrex Cyno Jammer" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Ansiblex Jump Gate" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Mercenary Den" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
{% elif timer.structure == "Metenox Moon Drill" %}
|
|
||||||
<div class="badge bg-warning">
|
|
||||||
|
|
||||||
{% comment %} BG: Danger {% endcomment %}
|
|
||||||
{% elif timer.structure == "TCU" %}
|
|
||||||
<div class="badge bg-danger">
|
|
||||||
{% elif timer.structure == "Astrahus" %}
|
|
||||||
<div class="badge bg-danger">
|
|
||||||
{% elif timer.structure == "Fortizar" %}
|
|
||||||
<div class="badge bg-danger">
|
|
||||||
{% elif timer.structure == "Keepstar" %}
|
|
||||||
<div class="badge bg-danger">
|
|
||||||
{% elif timer.structure == "Sotiyo" %}
|
|
||||||
<div class="badge bg-danger">
|
|
||||||
|
|
||||||
{% comment %} BG: Secondary {% endcomment %}
|
|
||||||
{% elif timer.structure == "TCU" %} {% comment %} Pending Removal {% endcomment %}
|
|
||||||
<div class="badge bg-secondary">
|
|
||||||
{% elif timer.structure == "Other" %}
|
|
||||||
<div class="badge bg-secondary">
|
|
||||||
|
|
||||||
{% comment %} BG: Success {% endcomment %}
|
|
||||||
{% elif timer.structure == "Moon Mining Cycle" %}
|
|
||||||
<div class="badge bg-success">
|
|
||||||
|
|
||||||
{% comment %} BG: Primary (for all other timers) {% endcomment %}
|
|
||||||
{% else %}
|
|
||||||
<div class="badge bg-primary">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{{ timer.get_structure_display }}
|
{{ timer.get_structure_display }}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -3,7 +3,8 @@ import logging
|
|||||||
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.mixins import (
|
from django.contrib.auth.mixins import (
|
||||||
LoginRequiredMixin, PermissionRequiredMixin,
|
LoginRequiredMixin,
|
||||||
|
PermissionRequiredMixin,
|
||||||
)
|
)
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
@ -20,8 +21,8 @@ from allianceauth.timerboard.models import Timer
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
TIMER_VIEW_PERMISSION = 'auth.timer_view'
|
TIMER_VIEW_PERMISSION = "auth.timer_view"
|
||||||
TIMER_MANAGE_PERMISSION = 'auth.timer_management'
|
TIMER_MANAGE_PERMISSION = "auth.timer_management"
|
||||||
|
|
||||||
|
|
||||||
class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||||
@ -29,22 +30,112 @@ class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
|||||||
|
|
||||||
|
|
||||||
class TimerView(BaseTimerView):
|
class TimerView(BaseTimerView):
|
||||||
template_name = 'timerboard/view.html'
|
template_name = "timerboard/view.html"
|
||||||
permission_required = TIMER_VIEW_PERMISSION
|
permission_required = TIMER_VIEW_PERMISSION
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
"""
|
||||||
|
Renders the timer view
|
||||||
|
|
||||||
|
:param request:
|
||||||
|
:type request:
|
||||||
|
:return:
|
||||||
|
:rtype:
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get_bg_modifier(structure):
|
||||||
|
"""
|
||||||
|
Returns the bootstrap bg modifier for the given structure
|
||||||
|
|
||||||
|
:param structure:
|
||||||
|
:type structure:
|
||||||
|
:return:
|
||||||
|
:rtype:
|
||||||
|
"""
|
||||||
|
|
||||||
|
if structure in bg_info:
|
||||||
|
return "info"
|
||||||
|
elif structure in bg_waning:
|
||||||
|
return "warning"
|
||||||
|
elif structure in bg_danger:
|
||||||
|
return "danger"
|
||||||
|
elif structure in bg_secondary:
|
||||||
|
return "secondary"
|
||||||
|
|
||||||
|
return "primary"
|
||||||
|
|
||||||
logger.debug(f"timer_view called by user {request.user}")
|
logger.debug(f"timer_view called by user {request.user}")
|
||||||
char = request.user.profile.main_character
|
char = request.user.profile.main_character
|
||||||
|
|
||||||
if char:
|
if char:
|
||||||
corp = char.corporation
|
corp = char.corporation
|
||||||
else:
|
else:
|
||||||
corp = None
|
corp = None
|
||||||
base_query = Timer.objects.select_related('eve_character')
|
|
||||||
|
base_query = Timer.objects.select_related("eve_character")
|
||||||
|
|
||||||
|
timers = []
|
||||||
|
corp_timers = []
|
||||||
|
future_timers = []
|
||||||
|
past_timers = []
|
||||||
|
|
||||||
|
bg_info = [
|
||||||
|
Timer.Structure.POCO.value, # POCO
|
||||||
|
Timer.Structure.POSS.value, # POS[S]
|
||||||
|
Timer.Structure.POSM.value, # POS[M]
|
||||||
|
Timer.Structure.POSL.value, # POS[L]
|
||||||
|
]
|
||||||
|
bg_waning = [
|
||||||
|
Timer.Structure.ANSIBLEX.value, # Ansiblex Jump Gate
|
||||||
|
Timer.Structure.ATHANOR.value, # Athanor
|
||||||
|
Timer.Structure.AZBEL.value, # Azbel
|
||||||
|
Timer.Structure.MERCDEN.value, # Mercenary Den
|
||||||
|
Timer.Structure.METENOX.value, # Metenox Moon Drill
|
||||||
|
Timer.Structure.ORBITALSKYHOOK.value, # Orbital Skyhook
|
||||||
|
Timer.Structure.PHAROLUX.value, # Pharolux Cyno Beacon
|
||||||
|
Timer.Structure.RAITARU.value, # Raitaru
|
||||||
|
"Station", # Legacy structure, remove in future update
|
||||||
|
Timer.Structure.TATARA.value, # Tatara
|
||||||
|
Timer.Structure.TENEBREX.value, # Tenebrex Cyno Jammer
|
||||||
|
]
|
||||||
|
bg_danger = [
|
||||||
|
Timer.Structure.ASTRAHUS.value, # Astrahus
|
||||||
|
Timer.Structure.FORTIZAR.value, # Fortizar
|
||||||
|
Timer.Structure.IHUB.value, # I-HUB
|
||||||
|
Timer.Structure.KEEPSTAR.value, # Keepstar
|
||||||
|
Timer.Structure.SOTIYO.value, # Sotiyo
|
||||||
|
Timer.Structure.TCU.value, # TCU (Legacy structure, remove in future update)
|
||||||
|
]
|
||||||
|
bg_secondary = [
|
||||||
|
Timer.Structure.MOONPOP.value, # Moon Mining Cycle
|
||||||
|
Timer.Structure.OTHER.value, # Other
|
||||||
|
]
|
||||||
|
|
||||||
|
# Timers
|
||||||
|
for timer in base_query.filter(corp_timer=False):
|
||||||
|
timer.bg_modifier = get_bg_modifier(timer.structure)
|
||||||
|
timers.append(timer)
|
||||||
|
|
||||||
|
# Corp Timers
|
||||||
|
for timer in base_query.filter(corp_timer=True, eve_corp=corp):
|
||||||
|
timer.bg_modifier = get_bg_modifier(timer.structure)
|
||||||
|
corp_timers.append(timer)
|
||||||
|
|
||||||
|
# Future Timers
|
||||||
|
for timer in base_query.filter(corp_timer=False, eve_time__gte=timezone.now()):
|
||||||
|
timer.bg_modifier = get_bg_modifier(timer.structure)
|
||||||
|
future_timers.append(timer)
|
||||||
|
|
||||||
|
# Past Timers
|
||||||
|
for timer in base_query.filter(corp_timer=False, eve_time__lt=timezone.now()):
|
||||||
|
timer.bg_modifier = get_bg_modifier(timer.structure)
|
||||||
|
past_timers.append(timer)
|
||||||
|
|
||||||
render_items = {
|
render_items = {
|
||||||
'timers': base_query.filter(corp_timer=False),
|
"timers": timers,
|
||||||
'corp_timers': base_query.filter(corp_timer=True, eve_corp=corp),
|
"corp_timers": corp_timers,
|
||||||
'future_timers': base_query.filter(corp_timer=False, eve_time__gte=timezone.now()),
|
"future_timers": future_timers,
|
||||||
'past_timers': base_query.filter(corp_timer=False, eve_time__lt=timezone.now()),
|
"past_timers": past_timers,
|
||||||
}
|
}
|
||||||
|
|
||||||
return render(request, self.template_name, context=render_items)
|
return render(request, self.template_name, context=render_items)
|
||||||
@ -52,7 +143,7 @@ class TimerView(BaseTimerView):
|
|||||||
|
|
||||||
class TimerManagementView(BaseTimerView):
|
class TimerManagementView(BaseTimerView):
|
||||||
permission_required = TIMER_MANAGE_PERMISSION
|
permission_required = TIMER_MANAGE_PERMISSION
|
||||||
index_redirect = 'timerboard:view'
|
index_redirect = "timerboard:view"
|
||||||
success_url = reverse_lazy(index_redirect)
|
success_url = reverse_lazy(index_redirect)
|
||||||
model = Timer
|
model = Timer
|
||||||
|
|
||||||
@ -66,12 +157,12 @@ class AddUpdateMixin:
|
|||||||
Inject the request user into the kwargs passed to the form
|
Inject the request user into the kwargs passed to the form
|
||||||
"""
|
"""
|
||||||
kwargs = super().get_form_kwargs()
|
kwargs = super().get_form_kwargs()
|
||||||
kwargs.update({'user': self.request.user})
|
kwargs.update({"user": self.request.user})
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView):
|
class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView):
|
||||||
template_name_suffix = '_create_form'
|
template_name_suffix = "_create_form"
|
||||||
form_class = TimerForm
|
form_class = TimerForm
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
@ -82,17 +173,18 @@ class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView):
|
|||||||
)
|
)
|
||||||
messages.success(
|
messages.success(
|
||||||
self.request,
|
self.request,
|
||||||
_('Added new timer in %(system)s at %(time)s.') % {"system": timer.system, "time": timer.eve_time}
|
_("Added new timer in %(system)s at %(time)s.")
|
||||||
|
% {"system": timer.system, "time": timer.eve_time},
|
||||||
)
|
)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
class EditTimerView(TimerManagementView, AddUpdateMixin, UpdateView):
|
class EditTimerView(TimerManagementView, AddUpdateMixin, UpdateView):
|
||||||
template_name_suffix = '_update_form'
|
template_name_suffix = "_update_form"
|
||||||
form_class = TimerForm
|
form_class = TimerForm
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
messages.success(self.request, _('Saved changes to the timer.'))
|
messages.success(self.request, _("Saved changes to the timer."))
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
|
||||||
@ -107,21 +199,20 @@ def dashboard_timers(request):
|
|||||||
except (EveCorporationInfo.DoesNotExist, AttributeError):
|
except (EveCorporationInfo.DoesNotExist, AttributeError):
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
timers = Timer.objects.select_related(
|
timers = Timer.objects.select_related("eve_character").filter(
|
||||||
'eve_character'
|
|
||||||
).filter(
|
|
||||||
(Q(corp_timer=True) & Q(eve_corp=corp)) | Q(corp_timer=False),
|
(Q(corp_timer=True) & Q(eve_corp=corp)) | Q(corp_timer=False),
|
||||||
eve_time__gte=timezone.now()
|
eve_time__gte=timezone.now(),
|
||||||
)[:5]
|
)[:5]
|
||||||
|
|
||||||
if timers.count():
|
if timers.count():
|
||||||
context = {
|
context = {
|
||||||
'timers': timers,
|
"timers": timers,
|
||||||
}
|
}
|
||||||
|
|
||||||
return render_to_string(
|
return render_to_string(
|
||||||
template_name='timerboard/dashboard.timers.html',
|
template_name="timerboard/dashboard.timers.html",
|
||||||
context=context, request=request
|
context=context,
|
||||||
|
request=request,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user