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

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

@@ -16,6 +16,7 @@ from django.views.generic import CreateView, UpdateView
from ..forms import SatelliteForm
from ..mixins import RoleRequiredMixin, FormMessageMixin
from ..models import Satellite, Band
from ..permissions import PermissionRequiredMixin
from ..utils import parse_pagination_params
@@ -252,15 +253,14 @@ class SatelliteListView(LoginRequiredMixin, View):
return render(request, "mainapp/satellite_list.html", context)
class SatelliteCreateView(RoleRequiredMixin, FormMessageMixin, CreateView):
class SatelliteCreateView(PermissionRequiredMixin, FormMessageMixin, CreateView):
"""View for creating a new satellite."""
permission_required = 'satellite_create'
model = Satellite
form_class = SatelliteForm
template_name = "mainapp/satellite_form.html"
success_url = reverse_lazy("mainapp:satellite_list")
success_message = "Спутник успешно создан!"
required_roles = ["admin", "moderator"]
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
@@ -274,15 +274,14 @@ class SatelliteCreateView(RoleRequiredMixin, FormMessageMixin, CreateView):
return super().form_valid(form)
class SatelliteUpdateView(RoleRequiredMixin, FormMessageMixin, UpdateView):
class SatelliteUpdateView(PermissionRequiredMixin, FormMessageMixin, UpdateView):
"""View for updating an existing satellite."""
permission_required = 'satellite_edit'
model = Satellite
form_class = SatelliteForm
template_name = "mainapp/satellite_form.html"
success_url = reverse_lazy("mainapp:satellite_list")
success_message = "Спутник успешно обновлен!"
required_roles = ["admin", "moderator"]
def get_context_data(self, **kwargs):
import json
@@ -320,10 +319,9 @@ class SatelliteUpdateView(RoleRequiredMixin, FormMessageMixin, UpdateView):
return super().form_valid(form)
class DeleteSelectedSatellitesView(RoleRequiredMixin, View):
class DeleteSelectedSatellitesView(PermissionRequiredMixin, View):
"""View for deleting multiple selected satellites with confirmation."""
required_roles = ["admin", "moderator"]
permission_required = 'satellite_delete'
def get(self, request):
"""Show confirmation page with details about satellites to be deleted."""