Реализовал систему разрешений

This commit is contained in:
2025-12-15 11:45:25 +03:00
parent ca7709ebff
commit 46dc79b93f
33 changed files with 1340 additions and 124 deletions

View File

@@ -19,13 +19,15 @@ from ..models import (
Parameter,
)
from ..mixins import RoleRequiredMixin
from ..permissions import PermissionRequiredMixin
from ..utils import parse_pagination_params, find_matching_transponder, find_matching_lyngsat
class TechAnalyzeEntryView(LoginRequiredMixin, View):
class TechAnalyzeEntryView(LoginRequiredMixin, PermissionRequiredMixin, View):
"""
Представление для ввода данных технического анализа.
"""
permission_required = 'source_tech_analyze'
def get(self, request):
satellites = Satellite.objects.all().order_by('name')
@@ -37,10 +39,11 @@ class TechAnalyzeEntryView(LoginRequiredMixin, View):
return render(request, 'mainapp/tech_analyze_entry.html', context)
class TechAnalyzeSaveView(LoginRequiredMixin, View):
class TechAnalyzeSaveView(LoginRequiredMixin, PermissionRequiredMixin, View):
"""
API endpoint для сохранения данных технического анализа.
"""
permission_required = 'tech_analyze_create'
def post(self, request):
try:
@@ -177,7 +180,7 @@ class TechAnalyzeSaveView(LoginRequiredMixin, View):
class LinkExistingPointsView(LoginRequiredMixin, View):
class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View):
"""
API endpoint для привязки существующих точек к данным теханализа.
@@ -194,6 +197,7 @@ class LinkExistingPointsView(LoginRequiredMixin, View):
* Обновить полосу частот (если 0 или None)
* Подобрать подходящий транспондер
"""
permission_required = 'tech_analyze_edit'
def post(self, request):
try:
@@ -388,11 +392,11 @@ class TechAnalyzeListView(LoginRequiredMixin, View):
return render(request, 'mainapp/tech_analyze_list.html', context)
class TechAnalyzeDeleteView(LoginRequiredMixin, RoleRequiredMixin, View):
class TechAnalyzeDeleteView(LoginRequiredMixin, PermissionRequiredMixin, View):
"""
API endpoint для удаления выбранных записей теханализа.
"""
allowed_roles = ['admin', 'moderator']
permission_required = 'tech_analyze_delete'
def post(self, request):
try: