Skip to content
Snippets Groups Projects
Commit 178df480 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add views to delete permissions

parent f0e29a55
No related branches found
No related tags found
1 merge request!533Resolve "Manage permissions for persons (users) and groups (Django groups) in frontend"
Pipeline #7165 passed
......@@ -93,6 +93,20 @@ class DashboardWidgetTable(tables.Table):
return record._meta.verbose_name
class PermissionDeleteColumn(tables.LinkColumn):
"""Link column with label 'Delete'."""
def __init__(self, url, **kwargs):
super().__init__(
url,
args=[A("pk")],
text=_("Delete"),
attrs={"a": {"class": "btn-flat waves-effect waves-red red-text"}},
verbose_name=_("Actions"),
**kwargs
)
class PermissionTable(tables.Table):
"""Table to list permissions."""
......@@ -118,21 +132,25 @@ class GroupObjectPermissionTable(ObjectPermissionTable):
"""Table to list assigned group object permissions."""
group = tables.Column()
delete = PermissionDeleteColumn("delete_group_object_permission")
class UserObjectPermissionTable(ObjectPermissionTable):
"""Table to list assigned user object permissions."""
user = tables.Column()
delete = PermissionDeleteColumn("delete_user_object_permission")
class GroupGlobalPermissionTable(GlobalPermissionTable):
"""Table to list assigned global user permissions."""
group = tables.Column()
delete = PermissionDeleteColumn("delete_group_global_permission")
class UserGlobalPermissionTable(GlobalPermissionTable):
"""Table to list assigned global group permissions."""
user = tables.Column()
delete = PermissionDeleteColumn("delete_user_global_permission")
......@@ -217,6 +217,26 @@ urlpatterns = [
views.GroupObjectPermissionsListBaseView.as_view(),
name="manage_group_object_permissions",
),
path(
"permissions/global/user/<int:pk>/delete/",
views.UserGlobalPermissionDeleteView.as_view(),
name="delete_user_global_permission",
),
path(
"permissions/global/group/<int:pk>/delete/",
views.GroupGlobalPermissionDeleteView.as_view(),
name="delete_group_global_permission",
),
path(
"permissions/object/user/<int:pk>/delete/",
views.UserObjectPermissionDeleteView.as_view(),
name="delete_user_object_permission",
),
path(
"permissions/object/group/<int:pk>/delete/",
views.GroupObjectPermissionDeleteView.as_view(),
name="delete_group_object_permission",
),
path(
"permissions/assign/",
views.SelectPermissionForAssignView.as_view(),
......
......@@ -2,7 +2,8 @@ from typing import Any, Dict, Optional, Type
from urllib.parse import urlencode
from django.apps import apps
from django.contrib.auth.models import Permission
from django.contrib.auth.models import Group as DjangoGroup
from django.contrib.auth.models import Permission, User
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import PermissionDenied
from django.core.paginator import Paginator
......@@ -24,7 +25,7 @@ from django_celery_results.models import TaskResult
from django_filters.views import FilterView
from django_tables2 import RequestConfig, SingleTableMixin, SingleTableView
from dynamic_preferences.forms import preference_form_builder
from guardian.shortcuts import get_objects_for_user
from guardian.shortcuts import GroupObjectPermission, UserObjectPermission, get_objects_for_user
from haystack.inputs import AutoQuery
from haystack.query import SearchQuerySet
from haystack.views import SearchView
......@@ -1067,6 +1068,46 @@ class AssignPermissionView(SuccessNextMixin, PermissionRequiredMixin, DetailView
return redirect(self.get_success_url())
class UserGlobalPermissionDeleteView(PermissionRequiredMixin, AdvancedDeleteView):
"""Delete a global user permission."""
permission_required = "core.manage_permissions"
model = User.user_permissions.through
success_message = _("The global user permission has been deleted.")
success_url = reverse_lazy("manage_user_global_permissions")
template_name = "core/pages/delete.html"
class GroupGlobalPermissionDeleteView(PermissionRequiredMixin, AdvancedDeleteView):
"""Delete a global group permission."""
permission_required = "core.manage_permissions"
model = DjangoGroup.permissions.through
success_message = _("The global group permission has been deleted.")
success_url = reverse_lazy("manage_group_global_permissions")
template_name = "core/pages/delete.html"
class UserObjectPermissionDeleteView(PermissionRequiredMixin, AdvancedDeleteView):
"""Delete a object user permission."""
permission_required = "core.manage_permissions"
model = UserObjectPermission
success_message = _("The object user permission has been deleted.")
success_url = reverse_lazy("manage_user_object_permissions")
template_name = "core/pages/delete.html"
class GroupObjectPermissionDeleteView(PermissionRequiredMixin, AdvancedDeleteView):
"""Delete a object group permission."""
permission_required = "core.manage_permissions"
model = GroupObjectPermission
success_message = _("The object group permission has been deleted.")
success_url = reverse_lazy("manage_group_object_permissions")
template_name = "core/pages/delete.html"
class RedirectToPDFFile(SingleObjectMixin, View):
"""Redirect to a generated PDF file."""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment