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 ""