Спрятал secret stat

This commit is contained in:
2025-12-04 14:19:48 +03:00
parent 00b85b5bf2
commit 727c24fb1f

View File

@@ -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'