Реализовал систему разрешений
This commit is contained in:
@@ -17,6 +17,7 @@ from django.views import View
|
||||
from ..forms import SourceForm
|
||||
from ..models import Source, Satellite
|
||||
from ..utils import format_coords_display, parse_pagination_params
|
||||
from ..permissions import PermissionRequiredMixin, permission_required
|
||||
|
||||
|
||||
class SourceListView(LoginRequiredMixin, View):
|
||||
@@ -818,7 +819,10 @@ class SourceListView(LoginRequiredMixin, View):
|
||||
|
||||
|
||||
class AdminModeratorMixin(UserPassesTestMixin):
|
||||
"""Mixin to restrict access to admin and moderator roles only."""
|
||||
"""Mixin to restrict access to admin and moderator roles only.
|
||||
|
||||
DEPRECATED: Use PermissionRequiredMixin instead for granular permissions.
|
||||
"""
|
||||
|
||||
def test_func(self):
|
||||
return (
|
||||
@@ -832,8 +836,9 @@ class AdminModeratorMixin(UserPassesTestMixin):
|
||||
return redirect('mainapp:source_list')
|
||||
|
||||
|
||||
class SourceCreateView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
class SourceCreateView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||
"""View for creating new Source."""
|
||||
permission_required = 'source_create'
|
||||
|
||||
def get(self, request):
|
||||
form = SourceForm()
|
||||
@@ -874,8 +879,9 @@ class SourceCreateView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
return render(request, 'mainapp/source_form.html', context)
|
||||
|
||||
|
||||
class SourceUpdateView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
class SourceUpdateView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||
"""View for editing Source with 4 coordinate fields and related ObjItems."""
|
||||
permission_required = 'source_edit'
|
||||
|
||||
def get(self, request, pk):
|
||||
source = get_object_or_404(Source, pk=pk)
|
||||
@@ -945,8 +951,9 @@ class SourceUpdateView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
return render(request, 'mainapp/source_form.html', context)
|
||||
|
||||
|
||||
class SourceDeleteView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
class SourceDeleteView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||
"""View for deleting Source."""
|
||||
permission_required = 'source_delete'
|
||||
|
||||
def get(self, request, pk):
|
||||
source = get_object_or_404(Source, pk=pk)
|
||||
@@ -975,8 +982,9 @@ class SourceDeleteView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
return redirect('mainapp:source_list')
|
||||
|
||||
|
||||
class DeleteSelectedSourcesView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
class DeleteSelectedSourcesView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||
"""View for deleting multiple selected sources with confirmation."""
|
||||
permission_required = 'source_delete'
|
||||
|
||||
def get(self, request):
|
||||
"""Show confirmation page with details about sources to be deleted."""
|
||||
@@ -1062,8 +1070,9 @@ class DeleteSelectedSourcesView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
|
||||
|
||||
|
||||
class MergeSourcesView(LoginRequiredMixin, AdminModeratorMixin, View):
|
||||
class MergeSourcesView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||
"""View for merging multiple sources into one."""
|
||||
permission_required = 'source_merge'
|
||||
|
||||
def post(self, request):
|
||||
"""Merge selected sources into the first one."""
|
||||
|
||||
Reference in New Issue
Block a user