Skip to content

Commit 0d37061

Browse files
committed
修复使用REST_FRAMEWORK权限问题
1 parent 4bc62c2 commit 0d37061

13 files changed

+36
-329
lines changed
-79 Bytes
Binary file not shown.

Ops/settings.py

-3
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,6 @@
131131
]
132132

133133
REST_FRAMEWORK = {
134-
'DEFAULT_PERMISSION_CLASSES': (
135-
'rest_framework.permissions.IsAdminUser',
136-
),
137134
'DEFAULT_AUTHENTICATION_CLASSES': (
138135
'rest_framework.authentication.SessionAuthentication',
139136
'rest_framework.authentication.BasicAuthentication',
275 Bytes
Binary file not shown.

api/views.py

+28-19
Original file line numberDiff line numberDiff line change
@@ -1,119 +1,128 @@
1+
import copy
12
from rest_framework import viewsets, permissions
23
from api.serializers import *
34

45

6+
class CustomDjangoModelPermission(permissions.DjangoModelPermissions):
7+
8+
def __init__(self):
9+
self.perms_map = copy.deepcopy(self.perms_map) # you need deepcopy when you inherit a dictionary type
10+
self.perms_map['GET'] = ['%(app_label)s.add_%(model_name)s']
11+
12+
513
class InventoryViewSet(viewsets.ModelViewSet):
614
"""
715
处理 GET POST , 处理 /api/post/<pk>/ GET PUT PATCH DELETE
816
"""
917
queryset = AnsibleInventory.objects.all().order_by('id')
1018
serializer_class = InventorySerializer
11-
permission_classes = (permissions.IsAdminUser,)
19+
permission_classes = (CustomDjangoModelPermission,)
1220

1321

1422
class AssetsViewSet(viewsets.ModelViewSet):
1523
queryset = Assets.objects.all().order_by('id')
1624
serializer_class = AssetsSerializer
17-
permission_classes = (permissions.IsAdminUser,)
25+
permission_classes = (CustomDjangoModelPermission,)
1826

1927

2028
class ServerAssetsViewSet(viewsets.ModelViewSet):
2129
queryset = ServerAssets.objects.all().order_by('id')
2230
serializer_class = ServerAssetsSerializer
23-
permission_classes = (permissions.IsAdminUser,)
31+
permission_classes = (CustomDjangoModelPermission,)
2432

2533

2634
class NetworkAssetsViewSet(viewsets.ModelViewSet):
2735
queryset = NetworkAssets.objects.all().order_by('id')
2836
serializer_class = NetworkAssetsSerializer
29-
permission_classes = (permissions.IsAdminUser,)
37+
permission_classes = (CustomDjangoModelPermission,)
3038

3139

3240
class OfficeAssetsViewSet(viewsets.ModelViewSet):
3341
queryset = OfficeAssets.objects.all().order_by('id')
3442
serializer_class = OfficeAssetsSerializer
35-
permission_classes = (permissions.IsAdminUser,)
43+
permission_classes = (CustomDjangoModelPermission,)
3644

3745

3846
class SecurityAssetsViewSet(viewsets.ModelViewSet):
3947
queryset = SecurityAssets.objects.all().order_by('id')
4048
serializer_class = SecurityAssetsSerializer
41-
permission_classes = (permissions.IsAdminUser,)
49+
permission_classes = (CustomDjangoModelPermission,)
4250

4351

4452
class StorageAssetsViewSet(viewsets.ModelViewSet):
4553
queryset = StorageAssets.objects.all().order_by('id')
4654
serializer_class = StorageAssetsSerializer
47-
permission_classes = (permissions.IsAdminUser,)
55+
permission_classes = (CustomDjangoModelPermission,)
4856

4957

5058
class SoftwareAssetsViewSet(viewsets.ModelViewSet):
5159
queryset = SoftwareAssets.objects.all().order_by('id')
5260
serializer_class = SoftwareAssetsSerializer
53-
permission_classes = (permissions.IsAdminUser,)
61+
permission_classes = (CustomDjangoModelPermission,)
5462

5563

5664
class ProjectViewSet(viewsets.ModelViewSet):
5765
queryset = Project.objects.all().order_by('id')
5866
serializer_class = ProjectSerializer
59-
permission_classes = (permissions.IsAdminUser,)
67+
permission_classes = (CustomDjangoModelPermission,)
6068

6169

6270
class ProjectConfigViewSet(viewsets.ModelViewSet):
6371
queryset = ProjectConfig.objects.all().order_by('id')
6472
serializer_class = ProjectConfigSerializer
65-
permission_classes = (permissions.IsAdminUser,)
73+
permission_classes = (CustomDjangoModelPermission,)
6674

6775

6876
class ServiceViewSet(viewsets.ModelViewSet):
6977
queryset = Service.objects.all().order_by('id')
7078
serializer_class = ServiceSerializer
71-
permission_classes = (permissions.IsAdminUser,)
79+
permission_classes = (CustomDjangoModelPermission,)
7280

7381

7482
class AssetProviderViewSet(viewsets.ModelViewSet):
7583
queryset = AssetProvider.objects.all().order_by('id')
7684
serializer_class = AssetProviderSerializer
77-
permission_classes = (permissions.IsAdminUser,)
85+
permission_classes = (CustomDjangoModelPermission,)
7886

7987

8088
class IDCViewSet(viewsets.ModelViewSet):
8189
queryset = IDC.objects.all().order_by('id')
8290
serializer_class = IDCSerializer
83-
permission_classes = (permissions.IsAdminUser,)
91+
permission_classes = (CustomDjangoModelPermission,)
8492

8593

8694
class CabinetViewSet(viewsets.ModelViewSet):
8795
queryset = Cabinet.objects.all().order_by('id')
8896
serializer_class = CabinetSerializer
89-
permission_classes = (permissions.IsAdminUser,)
97+
permission_classes = (CustomDjangoModelPermission,)
9098

9199

92100
class FortViewSet(viewsets.ModelViewSet):
93101
queryset = FortServer.objects.all().order_by('id')
94102
serializer_class = FortSerializer
95-
permission_classes = (permissions.IsAdminUser,)
103+
permission_classes = (CustomDjangoModelPermission,)
96104

97105

98106
class FortUserViewSet(viewsets.ModelViewSet):
99107
queryset = FortServerUser.objects.all().order_by('id')
100108
serializer_class = FortUserSerializer
101-
permission_classes = (permissions.IsAdminUser,)
109+
permission_classes = (CustomDjangoModelPermission,)
102110

103111

104112
class PeriodicTaskViewSet(viewsets.ModelViewSet):
105113
queryset = PeriodicTask.objects.all()
106114
serializer_class = PeriodicTaskSerializer
107-
permission_classes = (permissions.IsAdminUser,)
115+
permission_classes = (CustomDjangoModelPermission,)
108116

109117

110118
class WebSiteViewSet(viewsets.ModelViewSet):
111119
queryset = WebSite.objects.all()
112120
serializer_class = WebSiteSerializer
113-
permission_classes = (permissions.IsAdminUser,)
121+
permission_classes = (CustomDjangoModelPermission,)
114122

115123

116124
class PostViewSet(viewsets.ModelViewSet):
117125
queryset = Post.objects.all()
118126
serializer_class = PostSerializer
119-
permission_classes = (permissions.IsAdminUser,)
127+
permission_classes = (CustomDjangoModelPermission,)
128+

0 commit comments

Comments
 (0)