![]()
![]()
from django.conf import settings
def in_permission(user,request):
permission_list = user.roles.filter(permissions__title__isnull=False).values('permissions__title','permissions__url','permissions__group','permissions__code__title').distinct()
# print(permission_list)
# <QuerySet [{'permissions__title': '用户列表', 'permissions__url': '/users/', 'permissions__group': 1, 'permissions__code__title': 'list'},
# {'permissions__title': '添加用户', 'permissions__url': '/users/add/', 'permissions__group': 1, 'permissions__code__title': 'add'},
# {'permissions__title': '删除用户', 'permissions__url': '/users/del/(\\d+)/', 'permissions__group': 1, 'permissions__code__title': 'del'}, {'permissions__title': '编辑用户', 'permissions__url': '/users/edit/(\\d+)/', 'permissions__group': 1, 'permissions__code__title': 'edit'}, {'permissions__title': '订单列表', 'permissions__url': '/orders/', 'permissions__group': 2, 'permissions__code__title': 'list'}, {'permissions__title': '添加订单', 'permissions__url': '/orders/add/', 'permissions__group': 2, 'permissions__code__title': 'add'}, {'permissions__title': '删除订单', 'permissions__url': '/orders/del/(\\d+)/', 'permissions__group': 2, 'permissions__code__title': 'del'}, {'permissions__title': '编辑订单', 'permissions__url': '/orders/edit/(\\d+)/', 'permissions__group': 2, 'permissions__code__title': 'edit'}]>
permission_dic = {}
for permission in permission_list:
if permission_dic.get(permission['permissions__group']):
permission_dic.get(permission['permissions__group'])['urls'].append(permission['permissions__url'])
permission_dic.get(permission['permissions__group'])['codes'].append(permission['permissions__code__title'])
else:
permission_dic[permission['permissions__group']] = {"urls": [permission['permissions__url']],
"codes": [permission['permissions__code__title']]}
# print(permission_dic)
#{1: {'urls': ['/users/', '/users/add/', '/users/del/(\\d+)/', '/users/edit/(\\d+)/'], 'codes': ['list', 'add', 'del', 'edit']}
#向session中插入数据
request.session[settings.PERMISSION_SESSION_KEY] = permission_dic
return permission_dic
![]()