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): ...@@ -93,6 +93,20 @@ class DashboardWidgetTable(tables.Table):
return record._meta.verbose_name 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): class PermissionTable(tables.Table):
"""Table to list permissions.""" """Table to list permissions."""
...@@ -118,21 +132,25 @@ class GroupObjectPermissionTable(ObjectPermissionTable): ...@@ -118,21 +132,25 @@ class GroupObjectPermissionTable(ObjectPermissionTable):
"""Table to list assigned group object permissions.""" """Table to list assigned group object permissions."""
group = tables.Column() group = tables.Column()
delete = PermissionDeleteColumn("delete_group_object_permission")
class UserObjectPermissionTable(ObjectPermissionTable): class UserObjectPermissionTable(ObjectPermissionTable):
"""Table to list assigned user object permissions.""" """Table to list assigned user object permissions."""
user = tables.Column() user = tables.Column()
delete = PermissionDeleteColumn("delete_user_object_permission")
class GroupGlobalPermissionTable(GlobalPermissionTable): class GroupGlobalPermissionTable(GlobalPermissionTable):
"""Table to list assigned global user permissions.""" """Table to list assigned global user permissions."""
group = tables.Column() group = tables.Column()
delete = PermissionDeleteColumn("delete_group_global_permission")
class UserGlobalPermissionTable(GlobalPermissionTable): class UserGlobalPermissionTable(GlobalPermissionTable):
"""Table to list assigned global group permissions.""" """Table to list assigned global group permissions."""
user = tables.Column() user = tables.Column()
delete = PermissionDeleteColumn("delete_user_global_permission")
...@@ -217,6 +217,26 @@ urlpatterns = [ ...@@ -217,6 +217,26 @@ urlpatterns = [
views.GroupObjectPermissionsListBaseView.as_view(), views.GroupObjectPermissionsListBaseView.as_view(),
name="manage_group_object_permissions", 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( path(
"permissions/assign/", "permissions/assign/",
views.SelectPermissionForAssignView.as_view(), views.SelectPermissionForAssignView.as_view(),
......
...@@ -2,7 +2,8 @@ from typing import Any, Dict, Optional, Type ...@@ -2,7 +2,8 @@ from typing import Any, Dict, Optional, Type
from urllib.parse import urlencode from urllib.parse import urlencode
from django.apps import apps 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.contrib.contenttypes.models import ContentType
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.core.paginator import Paginator from django.core.paginator import Paginator
...@@ -24,7 +25,7 @@ from django_celery_results.models import TaskResult ...@@ -24,7 +25,7 @@ from django_celery_results.models import TaskResult
from django_filters.views import FilterView from django_filters.views import FilterView
from django_tables2 import RequestConfig, SingleTableMixin, SingleTableView from django_tables2 import RequestConfig, SingleTableMixin, SingleTableView
from dynamic_preferences.forms import preference_form_builder 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.inputs import AutoQuery
from haystack.query import SearchQuerySet from haystack.query import SearchQuerySet
from haystack.views import SearchView from haystack.views import SearchView
...@@ -1067,6 +1068,46 @@ class AssignPermissionView(SuccessNextMixin, PermissionRequiredMixin, DetailView ...@@ -1067,6 +1068,46 @@ class AssignPermissionView(SuccessNextMixin, PermissionRequiredMixin, DetailView
return redirect(self.get_success_url()) 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): class RedirectToPDFFile(SingleObjectMixin, View):
"""Redirect to a generated PDF file.""" """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