Спрятал secret stat
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
import json
|
||||
from datetime import timedelta, datetime
|
||||
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.functions import TruncDate, TruncMonth, ExtractWeekDay, ExtractHour
|
||||
from django.utils import timezone
|
||||
@@ -13,7 +14,24 @@ from django.views.generic import TemplateView
|
||||
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."""
|
||||
|
||||
template_name = 'mainapp/secret_stats.html'
|
||||
|
||||
Reference in New Issue
Block a user