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

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

@@ -12,6 +12,7 @@ from django.utils import timezone
from mainapp.models import SourceRequest, SourceRequestStatusHistory, Source, Satellite
from mainapp.forms import SourceRequestForm
from mainapp.permissions import PermissionRequiredMixin
import re
import pandas as pd
@@ -83,8 +84,9 @@ class SourceRequestListView(LoginRequiredMixin, ListView):
return context
class SourceRequestCreateView(LoginRequiredMixin, CreateView):
class SourceRequestCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
"""Создание заявки на источник."""
permission_required = 'request_create'
model = SourceRequest
form_class = SourceRequestForm
template_name = 'mainapp/source_request_form.html'
@@ -132,8 +134,9 @@ class SourceRequestCreateView(LoginRequiredMixin, CreateView):
return super().form_invalid(form)
class SourceRequestUpdateView(LoginRequiredMixin, UpdateView):
class SourceRequestUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
"""Редактирование заявки на источник."""
permission_required = 'request_edit'
model = SourceRequest
form_class = SourceRequestForm
template_name = 'mainapp/source_request_form.html'
@@ -164,8 +167,9 @@ class SourceRequestUpdateView(LoginRequiredMixin, UpdateView):
return super().form_invalid(form)
class SourceRequestDeleteView(LoginRequiredMixin, View):
class SourceRequestDeleteView(LoginRequiredMixin, PermissionRequiredMixin, View):
"""Удаление заявки на источник."""
permission_required = 'request_delete'
def post(self, request, pk):
try:
@@ -182,8 +186,9 @@ class SourceRequestDeleteView(LoginRequiredMixin, View):
}, status=404)
class SourceRequestBulkDeleteView(LoginRequiredMixin, View):
class SourceRequestBulkDeleteView(LoginRequiredMixin, PermissionRequiredMixin, View):
"""Массовое удаление заявок."""
permission_required = 'request_delete'
def post(self, request):
import json
@@ -688,8 +693,9 @@ class SourceDataAPIView(LoginRequiredMixin, View):
return JsonResponse(data)
class SourceRequestImportView(LoginRequiredMixin, View):
class SourceRequestImportView(LoginRequiredMixin, PermissionRequiredMixin, View):
"""Импорт заявок из Excel файла."""
permission_required = 'request_import'
def get(self, request):
"""Отображает форму загрузки файла."""