mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 06:20:16 +02:00
Merge branch 'timerboard-perms' into 'v4.x'
Add Dashboard Widget View Perms See merge request allianceauth/allianceauth!1602
This commit is contained in:
commit
5e4d1b9cfd
@ -7,7 +7,7 @@
|
|||||||
<h4 class="card-title text-center">{% translate "Upcoming Fleets" %}</h4>
|
<h4 class="card-title text-center">{% translate "Upcoming Fleets" %}</h4>
|
||||||
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div style="height: 300px; overflow-y:auto;">
|
<div>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -14,9 +14,11 @@ from .models import OpTimer, OpTimerType
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
OPS_VIEW_PERMISSION = 'auth.optimer_view'
|
||||||
|
OPS_MANAGE_PERMISSION = 'auth.optimer_management'
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.optimer_view')
|
@permission_required(OPS_VIEW_PERMISSION)
|
||||||
def optimer_view(request):
|
def optimer_view(request):
|
||||||
"""
|
"""
|
||||||
View for the optimer management page
|
View for the optimer management page
|
||||||
@ -39,7 +41,7 @@ def optimer_view(request):
|
|||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.optimer_management')
|
@permission_required(OPS_MANAGE_PERMISSION)
|
||||||
def add_optimer_view(request):
|
def add_optimer_view(request):
|
||||||
"""
|
"""
|
||||||
View for the add optimer page
|
View for the add optimer page
|
||||||
@ -98,7 +100,7 @@ def add_optimer_view(request):
|
|||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.optimer_management')
|
@permission_required(OPS_MANAGE_PERMISSION)
|
||||||
def remove_optimer(request, optimer_id):
|
def remove_optimer(request, optimer_id):
|
||||||
"""
|
"""
|
||||||
Remove optimer
|
Remove optimer
|
||||||
@ -121,7 +123,7 @@ def remove_optimer(request, optimer_id):
|
|||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.optimer_management')
|
@permission_required(OPS_MANAGE_PERMISSION)
|
||||||
def edit_optimer(request, optimer_id):
|
def edit_optimer(request, optimer_id):
|
||||||
"""
|
"""
|
||||||
Edit optimer
|
Edit optimer
|
||||||
@ -192,14 +194,22 @@ def dashboard_ops(request):
|
|||||||
:return:
|
:return:
|
||||||
:rtype:
|
:rtype:
|
||||||
"""
|
"""
|
||||||
|
if request.user.has_perm(OPS_VIEW_PERMISSION):
|
||||||
base_query = OpTimer.objects.select_related('eve_character', 'type')
|
base_query = OpTimer.objects.select_related('eve_character', 'type')
|
||||||
timers = base_query.filter(start__gte=timezone.now())[:5]
|
timers = base_query.filter(
|
||||||
|
start__gte=timezone.now()
|
||||||
|
)[:5]
|
||||||
|
|
||||||
if timers.count():
|
if timers.count():
|
||||||
context = {
|
context = {
|
||||||
'timers': timers,
|
'timers': timers,
|
||||||
}
|
}
|
||||||
return render_to_string('optimer/dashboard.ops.html', context=context, request=request)
|
return render_to_string(
|
||||||
|
'optimer/dashboard.ops.html',
|
||||||
|
context=context,
|
||||||
|
request=request
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return ""
|
||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h4 class="card-title text-center">{% translate "Upcoming Timers" %}</h4>
|
<h4 class="card-title text-center">{% translate "Upcoming Timers" %}</h4>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div style="height: 300px; overflow-y:auto;">
|
<div>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -20,6 +20,9 @@ from allianceauth.timerboard.models import Timer
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
TIMER_VIEW_PERMISSION = 'auth.timer_view'
|
||||||
|
TIMER_MANAGE_PERMISSION = 'auth.timer_management'
|
||||||
|
|
||||||
|
|
||||||
class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||||
pass
|
pass
|
||||||
@ -27,7 +30,7 @@ class BaseTimerView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
|||||||
|
|
||||||
class TimerView(BaseTimerView):
|
class TimerView(BaseTimerView):
|
||||||
template_name = 'timerboard/view.html'
|
template_name = 'timerboard/view.html'
|
||||||
permission_required = 'auth.timer_view'
|
permission_required = TIMER_VIEW_PERMISSION
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
logger.debug(f"timer_view called by user {request.user}")
|
logger.debug(f"timer_view called by user {request.user}")
|
||||||
@ -48,7 +51,7 @@ class TimerView(BaseTimerView):
|
|||||||
|
|
||||||
|
|
||||||
class TimerManagementView(BaseTimerView):
|
class TimerManagementView(BaseTimerView):
|
||||||
permission_required = 'auth.timer_management'
|
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
|
||||||
@ -74,8 +77,13 @@ class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView):
|
|||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
result = super().form_valid(form)
|
result = super().form_valid(form)
|
||||||
timer = self.object
|
timer = self.object
|
||||||
logger.info(f"Created new timer in {timer.system} at {timer.eve_time} by user {self.request.user}")
|
logger.info(
|
||||||
messages.success(self.request, _('Added new timer in %(system)s at %(time)s.') % {"system": timer.system, "time": timer.eve_time})
|
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
|
return result
|
||||||
|
|
||||||
|
|
||||||
@ -93,18 +101,29 @@ class RemoveTimerView(TimerManagementView, DeleteView):
|
|||||||
|
|
||||||
|
|
||||||
def dashboard_timers(request):
|
def dashboard_timers(request):
|
||||||
|
if request.user.has_perm(TIMER_VIEW_PERMISSION):
|
||||||
try:
|
try:
|
||||||
corp = request.user.profile.main_character.corporation
|
corp = request.user.profile.main_character.corporation
|
||||||
except (EveCorporationInfo.DoesNotExist, AttributeError):
|
except (EveCorporationInfo.DoesNotExist, AttributeError):
|
||||||
return ""
|
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(corp_timer=True) & Q(eve_corp=corp)) | Q(corp_timer=False),
|
||||||
|
eve_time__gte=timezone.now()
|
||||||
|
)[:5]
|
||||||
|
|
||||||
if timers.count():
|
if timers.count():
|
||||||
context = {
|
context = {
|
||||||
'timers': timers,
|
'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:
|
else:
|
||||||
return ""
|
return ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user