Bladeren bron

WEB 角色权限管理

chenshibin 4 jaren geleden
bovenliggende
commit
520efa5d8d
2 gewijzigde bestanden met toevoegingen van 64 en 8 verwijderingen
  1. 2 2
      AdminController/MenuController.py
  2. 62 6
      AdminController/RoleController.py

+ 2 - 2
AdminController/MenuController.py

@@ -61,7 +61,7 @@ class MenuView(View):
 
     def getList(self, userID, request_dict, response):
         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 = []
         i = 0
         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 = []
         for objlist in list:
             menulist.append(self.menulist(menu_qs, objlist))

+ 62 - 6
AdminController/RoleController.py

@@ -19,12 +19,12 @@ import logging
 from boto3.session import Session
 from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
 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.TokenObject import TokenObject
 from Object.UidTokenObject import UidTokenObject
 from Service.CommonService import CommonService
-from django.db.models import Q, F
+from django.db.models import Q, F, Max
 from time import strftime
 
 
@@ -54,13 +54,69 @@ class RoleView(View):
                 return self.getList(userID, request_dict, response)
             elif operation == 'doEdit':
                 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:
                 return response.json(404)
 
     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):
-        #待补充
-        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)