From 7a9808aad396e0aa8fb834b85c87177a0e3f3ed4 Mon Sep 17 00:00:00 2001 From: Aaron Kable Date: Fri, 8 Mar 2024 15:54:39 +0800 Subject: [PATCH 1/4] Add permision check to timerboard dashboard view --- allianceauth/timerboard/views.py | 47 ++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/allianceauth/timerboard/views.py b/allianceauth/timerboard/views.py index c39f94f1..148ed6b3 100644 --- a/allianceauth/timerboard/views.py +++ b/allianceauth/timerboard/views.py @@ -20,6 +20,9 @@ from allianceauth.timerboard.models import Timer logger = logging.getLogger(__name__) +TIMER_VIEW_PERMISSION = 'auth.timer_view' +TIMER_MANAGE_PERMISSION = 'auth.timer_management' + class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View): pass @@ -27,7 +30,7 @@ class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View): class TimerView(BaseTimerView): template_name = 'timerboard/view.html' - permission_required = 'auth.timer_view' + permission_required = TIMER_VIEW_PERMISSION def get(self, request): logger.debug(f"timer_view called by user {request.user}") @@ -48,7 +51,7 @@ class TimerView(BaseTimerView): class TimerManagementView(BaseTimerView): - permission_required = 'auth.timer_management' + permission_required = TIMER_MANAGE_PERMISSION index_redirect = 'timerboard:view' success_url = reverse_lazy(index_redirect) model = Timer @@ -74,8 +77,13 @@ class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView): 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}) + 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 @@ -93,18 +101,29 @@ class RemoveTimerView(TimerManagementView, DeleteView): def dashboard_timers(request): - try: - corp = request.user.profile.main_character.corporation - except (EveCorporationInfo.DoesNotExist, AttributeError): - return "" + if request.user.has_perm(TIMER_VIEW_PERMISSION): + try: + corp = request.user.profile.main_character.corporation + except (EveCorporationInfo.DoesNotExist, AttributeError): + return "" - timers = Timer.objects.select_related('eve_character').filter((Q(eve_corp__isnull=True) | Q(eve_corp=corp)) ,eve_time__gte=timezone.now())[:5] + timers = Timer.objects.select_related( + 'eve_character' + ).filter( + (Q(eve_corp__isnull=True) | Q(eve_corp=corp)), + eve_time__gte=timezone.now() + )[:5] - if timers.count(): - context = { - 'timers': timers, - } + if timers.count(): + context = { + 'timers': timers, + } - return render_to_string(template_name='timerboard/dashboard.timers.html', context=context, request=request) + return render_to_string( + template_name='timerboard/dashboard.timers.html', + context=context, request=request + ) + else: + return "" else: return "" From 2ea5b15175d53c1710c87602d8e14ef3247321c4 Mon Sep 17 00:00:00 2001 From: Aaron Kable Date: Fri, 8 Mar 2024 17:14:36 +0800 Subject: [PATCH 2/4] Add perms to ops dashboard view --- allianceauth/optimer/views.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/allianceauth/optimer/views.py b/allianceauth/optimer/views.py index f3627e89..760879e6 100644 --- a/allianceauth/optimer/views.py +++ b/allianceauth/optimer/views.py @@ -14,9 +14,11 @@ from .models import OpTimer, OpTimerType logger = logging.getLogger(__name__) +OPS_VIEW_PERMISSION = 'auth.optimer_view' +OPS_MANAGE_PERMISSION = 'auth.optimer_management' @login_required -@permission_required('auth.optimer_view') +@permission_required(OPS_VIEW_PERMISSION) def optimer_view(request): """ View for the optimer management page @@ -39,7 +41,7 @@ def optimer_view(request): @login_required -@permission_required('auth.optimer_management') +@permission_required(OPS_MANAGE_PERMISSION) def add_optimer_view(request): """ View for the add optimer page @@ -98,7 +100,7 @@ def add_optimer_view(request): @login_required -@permission_required('auth.optimer_management') +@permission_required(OPS_MANAGE_PERMISSION) def remove_optimer(request, optimer_id): """ Remove optimer @@ -121,7 +123,7 @@ def remove_optimer(request, optimer_id): @login_required -@permission_required('auth.optimer_management') +@permission_required(OPS_MANAGE_PERMISSION) def edit_optimer(request, optimer_id): """ Edit optimer @@ -192,14 +194,22 @@ def dashboard_ops(request): :return: :rtype: """ + if request.user.has_perm(OPS_VIEW_PERMISSION): + base_query = OpTimer.objects.select_related('eve_character', 'type') + timers = base_query.filter( + start__gte=timezone.now() + )[:5] - base_query = OpTimer.objects.select_related('eve_character', 'type') - timers = base_query.filter(start__gte=timezone.now())[:5] - - if timers.count(): - context = { - 'timers': timers, - } - return render_to_string('optimer/dashboard.ops.html', context=context, request=request) + if timers.count(): + context = { + 'timers': timers, + } + return render_to_string( + 'optimer/dashboard.ops.html', + context=context, + request=request + ) + else: + return "" else: return "" From eedf5082faca76f1caed8540c2d0747c10c3b782 Mon Sep 17 00:00:00 2001 From: Aaron Kable Date: Fri, 8 Mar 2024 17:15:03 +0800 Subject: [PATCH 3/4] remove the locked hieght from the ops/tiemrs dashboard widgets --- allianceauth/optimer/templates/optimer/dashboard.ops.html | 2 +- .../timerboard/templates/timerboard/dashboard.timers.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/allianceauth/optimer/templates/optimer/dashboard.ops.html b/allianceauth/optimer/templates/optimer/dashboard.ops.html index a21e6306..9432b33d 100644 --- a/allianceauth/optimer/templates/optimer/dashboard.ops.html +++ b/allianceauth/optimer/templates/optimer/dashboard.ops.html @@ -7,7 +7,7 @@

{% translate "Upcoming Fleets" %}

-
+
diff --git a/allianceauth/timerboard/templates/timerboard/dashboard.timers.html b/allianceauth/timerboard/templates/timerboard/dashboard.timers.html index be0cef02..0e8b69c0 100644 --- a/allianceauth/timerboard/templates/timerboard/dashboard.timers.html +++ b/allianceauth/timerboard/templates/timerboard/dashboard.timers.html @@ -6,7 +6,7 @@

{% translate "Upcoming Timers" %}

-
+
From 3b463e730570a557df2dbc41616440dea1ab2abf Mon Sep 17 00:00:00 2001 From: Aaron Kable Date: Fri, 8 Mar 2024 17:37:11 +0800 Subject: [PATCH 4/4] Fix timer query, Corp is not nullable --- allianceauth/timerboard/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/allianceauth/timerboard/views.py b/allianceauth/timerboard/views.py index 148ed6b3..780adba3 100644 --- a/allianceauth/timerboard/views.py +++ b/allianceauth/timerboard/views.py @@ -110,7 +110,7 @@ def dashboard_timers(request): timers = Timer.objects.select_related( 'eve_character' ).filter( - (Q(eve_corp__isnull=True) | Q(eve_corp=corp)), + (Q(corp_timer=True) & Q(eve_corp=corp)) | Q(corp_timer=False), eve_time__gte=timezone.now() )[:5]