Pārlūkot izejas kodu

WEB 角色权限管理

chenshibin 4 gadi atpakaļ
vecāks
revīzija
520efa5d8d

+ 2 - 2
AdminController/MenuController.py

@@ -61,7 +61,7 @@ class MenuView(View):
 
 
     def getList(self, userID, request_dict, response):
     def getList(self, userID, request_dict, response):
         role_qs = Role.objects.filter(device_user=userID)
         role_qs = Role.objects.filter(device_user=userID)
-        menu_qs = MenuModel.objects.filter(parentId=0, role__in=role_qs);
+        menu_qs = MenuModel.objects.filter(parentId=0);
         list = []
         list = []
         i = 0
         i = 0
         for menu in menu_qs:
         for menu in menu_qs:
@@ -91,7 +91,7 @@ class MenuView(View):
                     }
                     }
                 }
                 }
             )
             )
-        menu_qs = MenuModel.objects.filter(role__in=role_qs)
+        menu_qs = MenuModel.objects.filter()
         menulist = []
         menulist = []
         for objlist in list:
         for objlist in list:
             menulist.append(self.menulist(menu_qs, objlist))
             menulist.append(self.menulist(menu_qs, objlist))

+ 62 - 6
AdminController/RoleController.py

@@ -19,12 +19,12 @@ import logging
 from boto3.session import Session
 from boto3.session import Session
 from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
 from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
 from django.views.generic.base import View
 from django.views.generic.base import View
-from Model.models import Device_Info, Role
+from Model.models import Device_Info, Role, MenuModel
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Object.UidTokenObject import UidTokenObject
 from Object.UidTokenObject import UidTokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
-from django.db.models import Q, F
+from django.db.models import Q, F, Max
 from time import strftime
 from time import strftime
 
 
 
 
@@ -54,13 +54,69 @@ class RoleView(View):
                 return self.getList(userID, request_dict, response)
                 return self.getList(userID, request_dict, response)
             elif operation == 'doEdit':
             elif operation == 'doEdit':
                 return self.doEdit(userID, request_dict, response)
                 return self.doEdit(userID, request_dict, response)
+            elif operation == 'doDelete':
+                return self.doDelete(userID, request_dict, response)
+            elif operation == 'getPerms':
+                return self.getPerms(userID, request_dict, response)
+            elif operation == 'setPerms':
+                return self.setPerms(userID, request_dict, response)
             else:
             else:
                 return response.json(404)
                 return response.json(404)
 
 
     def getList(self, userID, request_dict, response):
     def getList(self, userID, request_dict, response):
-        role_qs =Role.objects.all().values('rid','roleName','Description');
-        return response.json(0, {'list': CommonService.qs_to_list(role_qs)})
+        roleName = request_dict.get('roleName', '').strip()  # 移除字符串头尾的空格
+        pageNo = request_dict.get('pageNo', None)
+        pageSize = request_dict.get('pageSize', None)
+        if not all([pageNo, pageSize]):
+            return response.json(444)
+
+        page = int(pageNo)
+        line = int(pageSize)
+        if roleName:
+            role_qs = Role.objects.filter(roleName=roleName).values('rid', 'roleName', 'Description');
+        else:
+            role_qs = Role.objects.all().values('rid', 'roleName', 'Description');
+
+        count = role_qs.count()
+        role_qs = role_qs.order_by('rid')[(page - 1) * line:page * line]
+
+
+        return response.json(0, {'list': CommonService.qs_to_list(role_qs), 'total': count})
 
 
     def doEdit(self, userID, request_dict, response):
     def doEdit(self, userID, request_dict, response):
-        #待补充
-        return response.json(0)
+
+        data_dict = request_dict.dict()
+        # data_dict = json.loads(data_str)
+        if 'rid' in data_dict:
+            Role.objects.filter(rid=data_dict['rid']).update(**data_dict)
+        else:
+            id = Role.objects.all().aggregate(Max('rid'))['rid__max'] + 1
+            data_dict['rid'] = id
+            Role.objects.create(**data_dict)
+        return response.json(0)
+
+    def doDelete(self, userID, request_dict, response):
+        rid = request_dict.get('rid', '')
+        if not all([rid]):
+            return response.json(444)
+        Role.objects.filter(rid=rid).delete()
+        return response.json(0)
+
+    def getPerms(self, userID, request_dict, response):
+        rid = request_dict.get('rid', '')
+
+        if rid:
+            role_qs = Role.objects.filter(rid=rid).values('menu__id')
+            return response.json(0, CommonService.qs_to_list(role_qs))
+
+        return response.json(0)
+
+    def setPerms(self, userID, request_dict, response):
+        rid = request_dict.get('rid', '')
+        permsIds = request_dict.get('permsIds', '')
+        if not all([rid]):
+            return response.json(444)
+        Role.objects.get(rid=rid).menu.clear()
+        menu_obj = MenuModel.objects.filter(id__in=permsIds.split(','))
+        Role.objects.filter(rid=rid)[0].menu.add(*menu_obj)
+        return response.json(0)