Skip to content

Commit f8fdbdc

Browse files
Added granular perm
1 parent e6b9759 commit f8fdbdc

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

nxtbn/core/admin_permissions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ def has_permission(self, request, view):
2323
return True
2424

2525
model_name = view.queryset.model.__name__.lower() # Get model name dynamically
26-
action = view.action.gql_required_perm
26+
action = view.action.required_perm
2727

2828
permission_name = self.get_permission_name(model_name, action)
2929

3030
# Check if the user has the generated permission
3131
return request.user.has_perm(permission_name)
3232

3333

34-
class ModelPermissions(BasePermission):
34+
class CommonPermissions(BasePermission):
3535

3636
def has_permission(self, request, view):
3737
if not request.user.is_authenticated:

nxtbn/order/api/dashboard/views.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
import django_filters
2222
from django_filters import rest_framework as filters
2323

24-
from nxtbn.core.admin_permissions import GranularPermission
24+
from nxtbn.core.admin_permissions import GranularPermission, CommonPermissions
25+
from nxtbn.core.enum_perms import PermissionsEnum
2526
from nxtbn.core.utils import to_currency_unit
2627
from nxtbn.order.proccesor.views import OrderProccessorAPIView
2728
from nxtbn.order import OrderAuthorizationStatus, OrderChargeStatus, OrderStatus, ReturnStatus
@@ -90,6 +91,7 @@ def filter_max_order_value(self, queryset, name, value):
9091

9192

9293
class OrderListView(generics.ListAPIView):
94+
permission_classes = (CommonPermissions, )
9395
queryset = Order.objects.all()
9496
serializer_class = OrderListSerializer
9597
pagination_class = NxtbnPagination
@@ -103,10 +105,9 @@ class OrderListView(generics.ListAPIView):
103105
search_fields = ['alias', 'id', 'user__username', 'supplier__name']
104106
ordering_fields = ['created_at']
105107

106-
role_action = 'list'
107-
108108

109109
class OrderDetailView(generics.RetrieveAPIView):
110+
permission_classes = (CommonPermissions, )
110111
queryset = Order.objects.all()
111112
serializer_class = OrderDetailsSerializer
112113
lookup_field = 'alias'
@@ -130,7 +131,7 @@ class OrderDetailView(generics.RetrieveAPIView):
130131

131132

132133
class BasicStatsView(APIView):
133-
134+
permission_classes = (CommonPermissions, )
134135
def get(self, request):
135136
# Get start and end dates from query parameters
136137
start_date_str = request.query_params.get('start_date')
@@ -217,6 +218,7 @@ def get(self, request):
217218

218219

219220
class OrderOverviewStatsView(APIView):
221+
permission_classes = (CommonPermissions, )
220222
"""
221223
View to provide an overview of order statistics within a specified date range.
222224
Methods:
@@ -310,7 +312,7 @@ def get(self, request):
310312

311313

312314
class OrderSummaryAPIView(APIView):
313-
315+
permission_classes = (CommonPermissions, )
314316
def get(self, request, *args, **kwargs):
315317
time_period = request.query_params.get('time_period') # 'year', 'month', 'week', 'day'
316318
current_date = datetime.now()
@@ -392,12 +394,19 @@ def get(self, request, *args, **kwargs):
392394

393395
return Response(formatted_data)
394396
class OrderEastimateView(OrderProccessorAPIView):
395-
permission_classes = (GranularPermission, )
396-
gql_required_perm = 'order.eastimate_order'
397-
398397
create_order = False # Eastimate order
399398

399+
def check_permissions(self, request):
400+
if not request.user.is_staff:
401+
self.permission_denied(
402+
request,
403+
message=_("You do not have permission to perform this action."),
404+
code='permission_denied'
405+
)
406+
400407
class OrderCreateView(OrderProccessorAPIView):
408+
permission_classes = (GranularPermission, )
409+
required_perm = 'can_add_order'
401410
create_order = True # Eastimate and create order
402411

403412
class CreateCustomAPIView(generics.CreateAPIView):

0 commit comments

Comments
 (0)