mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-16 07:50:16 +02:00
88 lines
2.8 KiB
Python
Executable File
88 lines
2.8 KiB
Python
Executable File
import datetime
|
|
import logging
|
|
|
|
from django.contrib import messages
|
|
from django.shortcuts import get_object_or_404
|
|
from django.shortcuts import render, redirect
|
|
from django.views import View
|
|
from django.urls import reverse_lazy
|
|
from django.views.generic import CreateView, UpdateView, DeleteView
|
|
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
|
|
from django.utils import timezone
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from .form import TimerForm
|
|
from .models import Timer
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
|
pass
|
|
|
|
|
|
class TimerView(BaseTimerView):
|
|
template_name = 'timerboard/view.html'
|
|
permission_required = 'auth.timer_view'
|
|
|
|
def get(self, request):
|
|
logger.debug(f"timer_view called by user {request.user}")
|
|
char = request.user.profile.main_character
|
|
if char:
|
|
corp = char.corporation
|
|
else:
|
|
corp = None
|
|
base_query = Timer.objects.select_related('eve_character')
|
|
render_items = {
|
|
'timers': base_query.filter(corp_timer=False),
|
|
'corp_timers': base_query.filter(corp_timer=True, eve_corp=corp),
|
|
'future_timers': base_query.filter(corp_timer=False, eve_time__gte=timezone.now()),
|
|
'past_timers': base_query.filter(corp_timer=False, eve_time__lt=timezone.now()),
|
|
}
|
|
|
|
return render(request, self.template_name, context=render_items)
|
|
|
|
|
|
class TimerManagementView(BaseTimerView):
|
|
permission_required = 'auth.timer_management'
|
|
index_redirect = 'timerboard:view'
|
|
success_url = reverse_lazy(index_redirect)
|
|
model = Timer
|
|
form_class = TimerForm
|
|
|
|
def get_timer(self, timer_id):
|
|
return get_object_or_404(self.model, id=timer_id)
|
|
|
|
|
|
class AddUpdateMixin:
|
|
def get_form_kwargs(self):
|
|
"""
|
|
Inject the request user into the kwargs passed to the form
|
|
"""
|
|
kwargs = super().get_form_kwargs()
|
|
kwargs.update({'user': self.request.user})
|
|
return kwargs
|
|
|
|
|
|
class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView):
|
|
template_name_suffix = '_create_form'
|
|
|
|
def form_valid(self, form):
|
|
result = super().form_valid(form)
|
|
timer = self.object
|
|
logger.info(f"Created new timer in {timer.system} at {timer.eve_time} by user {self.request.user}")
|
|
messages.success(self.request, _('Added new timer in %(system)s at %(time)s.') % {"system": timer.system, "time": timer.eve_time})
|
|
return result
|
|
|
|
|
|
class EditTimerView(TimerManagementView, AddUpdateMixin, UpdateView):
|
|
template_name_suffix = '_update_form'
|
|
|
|
def form_valid(self, form):
|
|
messages.success(self.request, _('Saved changes to the timer.'))
|
|
return super().form_valid(form)
|
|
|
|
|
|
class RemoveTimerView(TimerManagementView, DeleteView):
|
|
pass
|