Спрятал secret stat
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
import json
|
import json
|
||||||
from datetime import timedelta, datetime
|
from datetime import timedelta, datetime
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||||
from django.db.models import Count, Q, Min, Max, Avg, Sum
|
from django.db.models import Count, Q, Min, Max, Avg, Sum
|
||||||
from django.db.models.functions import TruncDate, TruncMonth, ExtractWeekDay, ExtractHour
|
from django.db.models.functions import TruncDate, TruncMonth, ExtractWeekDay, ExtractHour
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
@@ -13,7 +14,24 @@ from django.views.generic import TemplateView
|
|||||||
from ..models import ObjItem, Source, Satellite, Geo, Parameter
|
from ..models import ObjItem, Source, Satellite, Geo, Parameter
|
||||||
|
|
||||||
|
|
||||||
class SecretStatsView(TemplateView):
|
class AdminOnlyMixin(UserPassesTestMixin):
|
||||||
|
"""Mixin to restrict access to admin role only."""
|
||||||
|
|
||||||
|
def test_func(self):
|
||||||
|
return (
|
||||||
|
self.request.user.is_authenticated and
|
||||||
|
hasattr(self.request.user, 'customuser') and
|
||||||
|
self.request.user.customuser.role == 'admin'
|
||||||
|
)
|
||||||
|
|
||||||
|
def handle_no_permission(self):
|
||||||
|
from django.contrib import messages
|
||||||
|
from django.shortcuts import redirect
|
||||||
|
messages.error(self.request, 'Доступ запрещён. Требуется роль администратора.')
|
||||||
|
return redirect('mainapp:home')
|
||||||
|
|
||||||
|
|
||||||
|
class SecretStatsView(LoginRequiredMixin, AdminOnlyMixin, TemplateView):
|
||||||
"""Секретная страница статистики - итоги года в стиле Spotify Wrapped."""
|
"""Секретная страница статистики - итоги года в стиле Spotify Wrapped."""
|
||||||
|
|
||||||
template_name = 'mainapp/secret_stats.html'
|
template_name = 'mainapp/secret_stats.html'
|
||||||
|
|||||||
Reference in New Issue
Block a user