Skip to content

Commit af9c25b

Browse files
author
oko-x
committed
triv: fixes default action permissions
1 parent aebd870 commit af9c25b

File tree

4 files changed

+20
-7
lines changed

4 files changed

+20
-7
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "django-smartbase-admin"
3-
version = "0.2.19"
3+
version = "0.2.20"
44
description = ""
55
authors = ["SmartBase <[email protected]>"]
66
readme = "README.md"

src/django_smartbase_admin/engine/actions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from django.core.exceptions import ImproperlyConfigured
2-
from django.utils.text import slugify
32

43

54
class SBAdminCustomAction(object):
65
title = None
76
url = None
87
view = None
98
action_id = None
9+
action_modifier = None
1010
css_class = None
1111
no_params = False
1212
open_in_modal = False

src/django_smartbase_admin/engine/admin_base_view.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def get_menu_label(self):
5050

5151
def has_permission(self, request, obj=None, permission=None):
5252
return SBAdminViewService.has_permission(
53-
request, self, self.model, obj, permission
53+
request=request, view=self, model=self.model, obj=obj, permission=permission
5454
)
5555

5656
def has_add_permission(self, request, obj=None):
@@ -65,11 +65,11 @@ def has_change_permission(self, request, obj=None):
6565
def has_delete_permission(self, request, obj=None):
6666
return self.has_permission(request, obj, "delete")
6767

68-
def has_permission_for_action(self, request, action_id):
68+
def has_permission_for_action(self, request, action):
6969
return self.has_permission(
70-
request,
70+
request=request,
7171
obj=None,
72-
permission=action_id,
72+
permission=action,
7373
)
7474

7575
def has_view_or_change_permission(self, request, obj=None):
@@ -80,7 +80,7 @@ def has_view_or_change_permission(self, request, obj=None):
8080
def process_actions_permissions(self, request, actions):
8181
result = []
8282
for action in actions:
83-
if self.has_permission_for_action(request, action.action_id):
83+
if self.has_permission_for_action(request, action):
8484
result.append(action)
8585
return result
8686

@@ -110,6 +110,9 @@ def action_view(self, request, action=None, modifier=None):
110110
action_function = getattr(self, action, None)
111111
if not action_function:
112112
raise Http404
113+
action = SBAdminCustomAction(
114+
title=action, view=self, action_id=action, action_modifier=modifier
115+
)
113116
permitted_action = self.has_permission_for_action(request, action)
114117
if not permitted_action:
115118
raise PermissionDenied

src/django_smartbase_admin/engine/configuration.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.db.models import Q
55

66
from django_smartbase_admin.admin.site import sb_admin_site
7+
from django_smartbase_admin.engine.actions import SBAdminCustomAction
78
from django_smartbase_admin.engine.const import GLOBAL_FILTER_DATA_KEY
89
from django_smartbase_admin.utils import to_list
910

@@ -126,9 +127,18 @@ def restrict_queryset(
126127
):
127128
return qs
128129

130+
def has_action_permission(
131+
self, request, request_data, view, model, obj, permission
132+
):
133+
return request.user.is_staff
134+
129135
def has_permission(
130136
self, request, request_data, view, model=None, obj=None, permission=None
131137
):
138+
if isinstance(permission, SBAdminCustomAction):
139+
return self.has_action_permission(
140+
request, request_data, view, model, obj, permission
141+
)
132142
if model:
133143
opts = model._meta
134144
codename = get_permission_codename(permission, opts)

0 commit comments

Comments
 (0)