功能变化: 优化角色授权中的获取授权列表
This commit is contained in:
@@ -1 +1,56 @@
|
||||
from functools import wraps
|
||||
|
||||
from django.db.models import Func, F, OuterRef, Exists
|
||||
from django.test import TestCase
|
||||
import django
|
||||
import os
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.settings")
|
||||
django.setup()
|
||||
from dvadmin.system.models import Menu, RoleMenuPermission, RoleMenuButtonPermission, MenuButton
|
||||
|
||||
|
||||
import time
|
||||
|
||||
def timing_decorator(func):
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
start_time = time.time()
|
||||
result = func(*args, **kwargs)
|
||||
end_time = time.time()
|
||||
run_time = end_time - start_time
|
||||
print(f"{func.__name__} ran in {run_time:.6f} seconds")
|
||||
return result
|
||||
return wrapper
|
||||
|
||||
@timing_decorator
|
||||
def getMenu():
|
||||
data = []
|
||||
queryset = Menu.objects.filter(status=1, is_catalog=False).values('name', 'id')
|
||||
for item in queryset:
|
||||
parent_list = Menu.get_all_parent(item['id'])
|
||||
names = [d["name"] for d in parent_list]
|
||||
completeName = "/".join(names)
|
||||
isCheck = RoleMenuPermission.objects.filter(
|
||||
menu__id=item['id'],
|
||||
role__id=1,
|
||||
).exists()
|
||||
mbCheck = RoleMenuButtonPermission.objects.filter(
|
||||
menu_button = OuterRef("pk"),
|
||||
role__id=1,
|
||||
)
|
||||
btns = MenuButton.objects.filter(
|
||||
menu__id=item['id'],
|
||||
).annotate(isCheck=Exists(mbCheck)).values('id', 'name', 'value', 'isCheck',data_range=F('menu_button_permission__data_range'))
|
||||
# print(b)
|
||||
dicts = {
|
||||
'name': completeName,
|
||||
'id': item['id'],
|
||||
'isCheck': isCheck,
|
||||
'btns':btns
|
||||
}
|
||||
print(dicts)
|
||||
data.append(dicts)
|
||||
# print(data)
|
||||
|
||||
if __name__ == '__main__':
|
||||
getMenu()
|
||||
Reference in New Issue
Block a user