|
| 1 | +import copy |
1 | 2 | from rest_framework import viewsets, permissions
|
2 | 3 | from api.serializers import *
|
3 | 4 |
|
4 | 5 |
|
| 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 | + |
5 | 13 | class InventoryViewSet(viewsets.ModelViewSet):
|
6 | 14 | """
|
7 | 15 | 处理 GET POST , 处理 /api/post/<pk>/ GET PUT PATCH DELETE
|
8 | 16 | """
|
9 | 17 | queryset = AnsibleInventory.objects.all().order_by('id')
|
10 | 18 | serializer_class = InventorySerializer
|
11 |
| - permission_classes = (permissions.IsAdminUser,) |
| 19 | + permission_classes = (CustomDjangoModelPermission,) |
12 | 20 |
|
13 | 21 |
|
14 | 22 | class AssetsViewSet(viewsets.ModelViewSet):
|
15 | 23 | queryset = Assets.objects.all().order_by('id')
|
16 | 24 | serializer_class = AssetsSerializer
|
17 |
| - permission_classes = (permissions.IsAdminUser,) |
| 25 | + permission_classes = (CustomDjangoModelPermission,) |
18 | 26 |
|
19 | 27 |
|
20 | 28 | class ServerAssetsViewSet(viewsets.ModelViewSet):
|
21 | 29 | queryset = ServerAssets.objects.all().order_by('id')
|
22 | 30 | serializer_class = ServerAssetsSerializer
|
23 |
| - permission_classes = (permissions.IsAdminUser,) |
| 31 | + permission_classes = (CustomDjangoModelPermission,) |
24 | 32 |
|
25 | 33 |
|
26 | 34 | class NetworkAssetsViewSet(viewsets.ModelViewSet):
|
27 | 35 | queryset = NetworkAssets.objects.all().order_by('id')
|
28 | 36 | serializer_class = NetworkAssetsSerializer
|
29 |
| - permission_classes = (permissions.IsAdminUser,) |
| 37 | + permission_classes = (CustomDjangoModelPermission,) |
30 | 38 |
|
31 | 39 |
|
32 | 40 | class OfficeAssetsViewSet(viewsets.ModelViewSet):
|
33 | 41 | queryset = OfficeAssets.objects.all().order_by('id')
|
34 | 42 | serializer_class = OfficeAssetsSerializer
|
35 |
| - permission_classes = (permissions.IsAdminUser,) |
| 43 | + permission_classes = (CustomDjangoModelPermission,) |
36 | 44 |
|
37 | 45 |
|
38 | 46 | class SecurityAssetsViewSet(viewsets.ModelViewSet):
|
39 | 47 | queryset = SecurityAssets.objects.all().order_by('id')
|
40 | 48 | serializer_class = SecurityAssetsSerializer
|
41 |
| - permission_classes = (permissions.IsAdminUser,) |
| 49 | + permission_classes = (CustomDjangoModelPermission,) |
42 | 50 |
|
43 | 51 |
|
44 | 52 | class StorageAssetsViewSet(viewsets.ModelViewSet):
|
45 | 53 | queryset = StorageAssets.objects.all().order_by('id')
|
46 | 54 | serializer_class = StorageAssetsSerializer
|
47 |
| - permission_classes = (permissions.IsAdminUser,) |
| 55 | + permission_classes = (CustomDjangoModelPermission,) |
48 | 56 |
|
49 | 57 |
|
50 | 58 | class SoftwareAssetsViewSet(viewsets.ModelViewSet):
|
51 | 59 | queryset = SoftwareAssets.objects.all().order_by('id')
|
52 | 60 | serializer_class = SoftwareAssetsSerializer
|
53 |
| - permission_classes = (permissions.IsAdminUser,) |
| 61 | + permission_classes = (CustomDjangoModelPermission,) |
54 | 62 |
|
55 | 63 |
|
56 | 64 | class ProjectViewSet(viewsets.ModelViewSet):
|
57 | 65 | queryset = Project.objects.all().order_by('id')
|
58 | 66 | serializer_class = ProjectSerializer
|
59 |
| - permission_classes = (permissions.IsAdminUser,) |
| 67 | + permission_classes = (CustomDjangoModelPermission,) |
60 | 68 |
|
61 | 69 |
|
62 | 70 | class ProjectConfigViewSet(viewsets.ModelViewSet):
|
63 | 71 | queryset = ProjectConfig.objects.all().order_by('id')
|
64 | 72 | serializer_class = ProjectConfigSerializer
|
65 |
| - permission_classes = (permissions.IsAdminUser,) |
| 73 | + permission_classes = (CustomDjangoModelPermission,) |
66 | 74 |
|
67 | 75 |
|
68 | 76 | class ServiceViewSet(viewsets.ModelViewSet):
|
69 | 77 | queryset = Service.objects.all().order_by('id')
|
70 | 78 | serializer_class = ServiceSerializer
|
71 |
| - permission_classes = (permissions.IsAdminUser,) |
| 79 | + permission_classes = (CustomDjangoModelPermission,) |
72 | 80 |
|
73 | 81 |
|
74 | 82 | class AssetProviderViewSet(viewsets.ModelViewSet):
|
75 | 83 | queryset = AssetProvider.objects.all().order_by('id')
|
76 | 84 | serializer_class = AssetProviderSerializer
|
77 |
| - permission_classes = (permissions.IsAdminUser,) |
| 85 | + permission_classes = (CustomDjangoModelPermission,) |
78 | 86 |
|
79 | 87 |
|
80 | 88 | class IDCViewSet(viewsets.ModelViewSet):
|
81 | 89 | queryset = IDC.objects.all().order_by('id')
|
82 | 90 | serializer_class = IDCSerializer
|
83 |
| - permission_classes = (permissions.IsAdminUser,) |
| 91 | + permission_classes = (CustomDjangoModelPermission,) |
84 | 92 |
|
85 | 93 |
|
86 | 94 | class CabinetViewSet(viewsets.ModelViewSet):
|
87 | 95 | queryset = Cabinet.objects.all().order_by('id')
|
88 | 96 | serializer_class = CabinetSerializer
|
89 |
| - permission_classes = (permissions.IsAdminUser,) |
| 97 | + permission_classes = (CustomDjangoModelPermission,) |
90 | 98 |
|
91 | 99 |
|
92 | 100 | class FortViewSet(viewsets.ModelViewSet):
|
93 | 101 | queryset = FortServer.objects.all().order_by('id')
|
94 | 102 | serializer_class = FortSerializer
|
95 |
| - permission_classes = (permissions.IsAdminUser,) |
| 103 | + permission_classes = (CustomDjangoModelPermission,) |
96 | 104 |
|
97 | 105 |
|
98 | 106 | class FortUserViewSet(viewsets.ModelViewSet):
|
99 | 107 | queryset = FortServerUser.objects.all().order_by('id')
|
100 | 108 | serializer_class = FortUserSerializer
|
101 |
| - permission_classes = (permissions.IsAdminUser,) |
| 109 | + permission_classes = (CustomDjangoModelPermission,) |
102 | 110 |
|
103 | 111 |
|
104 | 112 | class PeriodicTaskViewSet(viewsets.ModelViewSet):
|
105 | 113 | queryset = PeriodicTask.objects.all()
|
106 | 114 | serializer_class = PeriodicTaskSerializer
|
107 |
| - permission_classes = (permissions.IsAdminUser,) |
| 115 | + permission_classes = (CustomDjangoModelPermission,) |
108 | 116 |
|
109 | 117 |
|
110 | 118 | class WebSiteViewSet(viewsets.ModelViewSet):
|
111 | 119 | queryset = WebSite.objects.all()
|
112 | 120 | serializer_class = WebSiteSerializer
|
113 |
| - permission_classes = (permissions.IsAdminUser,) |
| 121 | + permission_classes = (CustomDjangoModelPermission,) |
114 | 122 |
|
115 | 123 |
|
116 | 124 | class PostViewSet(viewsets.ModelViewSet):
|
117 | 125 | queryset = Post.objects.all()
|
118 | 126 | serializer_class = PostSerializer
|
119 |
| - permission_classes = (permissions.IsAdminUser,) |
| 127 | + permission_classes = (CustomDjangoModelPermission,) |
| 128 | + |
0 commit comments