feat(role_menu_20240628): 优化权限配置,增强用户体验

- 修复无法保存菜单授权bug
- 列权限增加禁用状态的逻辑判断
This commit is contained in:
李小涛
2024-06-28 23:35:05 +08:00
parent 4a26e1476a
commit c2b0c3f25b
3 changed files with 62 additions and 61 deletions

View File

@@ -209,23 +209,24 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet):
menu_list = RoleMenuPermission.objects.filter(role__in=role_id_list).values_list('menu__id', flat=True)
# 当前角色已授权的菜单
menu_queryset = Menu.objects.filter(id__in=menu_list).prefetch_related('menuPermission').prefetch_related('menufield_set')
menu_queryset = Menu.objects.filter(id__in=menu_list).prefetch_related('menuPermission').prefetch_related(
'menufield_set')
result = []
for menu_item in menu_queryset:
isCheck = RoleMenuPermission.objects.filter(
menu_id=menu_item.id,
role_id=current_role
).exists()
menu_id=menu_item.id,
role_id=current_role
).exists()
dicts = {
'name': menu_item.name,
'id': menu_item.id,
'parent': menu_item.parent.id if menu_item.parent else None,
'isCheck':isCheck,
'isCheck': isCheck,
'btns': [],
'columns': []
}
for mb_item in menu_item.menuPermission.all():
rolemenubuttonpermission_queryset =RoleMenuButtonPermission.objects.filter(
rolemenubuttonpermission_queryset = RoleMenuButtonPermission.objects.filter(
menu_button_id=mb_item.id,
role_id=current_role
).first()
@@ -240,22 +241,27 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet):
'isCheck': bool(rolemenubuttonpermission_queryset),
}
)
for column_item in menu_item.menufield_set.all():
fieldpermission_queryset = column_item.menu_field.filter(role_id=current_role).first()
query = fieldpermission_queryset.is_query if fieldpermission_queryset else None
create = fieldpermission_queryset.is_create if fieldpermission_queryset else None
update = fieldpermission_queryset.is_update if fieldpermission_queryset else None
dicts['columns'].append({
'id':column_item.id,
'field_name':column_item.field_name,
'title':column_item.title,
'is_query':fieldpermission_queryset.is_query,
'is_create':fieldpermission_queryset.is_create,
'is_update':fieldpermission_queryset.is_update
})
'id': column_item.id,
'field_name': column_item.field_name,
'title': column_item.title,
'is_query': query,
'is_create': create,
'is_update': update,
'query_disabled': False if is_superuser else not query,
'create_disabled': False if is_superuser else not create,
'update_disabled': False if is_superuser else not update,
})
print(dicts['columns'])
result.append(dicts)
return DetailResponse(data=result)
@action(methods=['PUT'], detail=True, permission_classes=[IsAuthenticated])
def set_role_premission(self, request, pk):
"""
@@ -268,7 +274,7 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet):
RoleMenuPermission.objects.filter(role=pk).delete()
RoleMenuButtonPermission.objects.filter(role=pk).delete()
for item in body:
for menu in item["menus"]:
for menu in item["children"]:
if menu.get('isCheck'):
menu_parent = Menu.get_all_parent(menu.get('id'))
role_menu_permission_list = []
@@ -283,6 +289,7 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet):
data_range=data_range)
instance.dept.set(btn.get('dept', []))
for col in menu.get('columns'):
print(col)
FieldPermission.objects.update_or_create(role_id=pk, field_id=col.get('id'),
defaults={
'is_query': col.get('is_query'),