更新初始化文件以及初始化逻辑(角色菜单和角色菜单按钮)

This commit is contained in:
china_ahhui
2024-06-02 11:28:34 +08:00
parent 3720fbe4a0
commit 7ed699593c
4 changed files with 31 additions and 27 deletions

View File

@@ -175,22 +175,24 @@ class RoleMenuInitSerializer(CustomModelSerializer):
""" """
初始化角色菜单(用于生成初始化json文件) 初始化角色菜单(用于生成初始化json文件)
""" """
role_key = serializers.CharField(max_length=100, required=True) role__key = serializers.CharField(max_length=100, required=True)
menu_component_name = serializers.CharField(max_length=100, required=True) menu__web_path = serializers.CharField(max_length=100, required=True)
menu__component_name = serializers.CharField(max_length=100, required=True, allow_blank=True)
def create(self, validated_data): def create(self, validated_data):
init_data = self.initial_data init_data = self.initial_data
validated_data.pop('menu_component_name') validated_data.pop('menu__web_path')
validated_data.pop('role_key') validated_data.pop('menu__component_name')
role_id = Role.objects.filter(key=init_data['role_key']).first() validated_data.pop('role__key')
menu_id = Menu.objects.filter(component_name=init_data['menu_component_name']).first() role_id = Role.objects.filter(key=init_data['role__key']).first()
menu_id = Menu.objects.filter(web_path=init_data['menu__web_path'], component_name=init_data['menu__component_name']).first()
validated_data['role'] = role_id validated_data['role'] = role_id
validated_data['menu'] = menu_id validated_data['menu'] = menu_id
return super().create(validated_data) return super().create(validated_data)
class Meta: class Meta:
model = RoleMenuPermission model = RoleMenuPermission
fields = ['role_key', 'menu_component_name', 'creator', 'dept_belong_id'] fields = ['role__key', 'menu__web_path', 'menu__component_name', 'creator', 'dept_belong_id']
read_only_fields = ["id"] read_only_fields = ["id"]
extra_kwargs = { extra_kwargs = {
'role': {'required': False}, 'role': {'required': False},
@@ -204,25 +206,30 @@ class RoleMenuButtonInitSerializer(CustomModelSerializer):
""" """
初始化角色菜单按钮(用于生成初始化json文件) 初始化角色菜单按钮(用于生成初始化json文件)
""" """
role_key = serializers.CharField(max_length=100, required=True) role__key = serializers.CharField(max_length=100, required=True)
menu_button_value = serializers.CharField(max_length=100, required=True) menu_button__value = serializers.CharField(max_length=100, required=True)
data_range = serializers.CharField(max_length=100, required=False) data_range = serializers.CharField(max_length=100, required=False)
def create(self, validated_data): def create(self, validated_data):
init_data = self.initial_data init_data = self.initial_data
validated_data.pop('menu_button_value') validated_data.pop('menu_button__value')
validated_data.pop('role_key') validated_data.pop('role__key')
role_id = Role.objects.filter(key=init_data['role_key']).first() role_id = Role.objects.filter(key=init_data['role__key']).first()
menu_button_id = MenuButton.objects.filter(value=init_data['menu_button_value']).first() menu_button_id = MenuButton.objects.filter(value=init_data['menu_button__value']).first()
validated_data['role'] = role_id validated_data['role'] = role_id
validated_data['menu_button'] = menu_button_id validated_data['menu_button'] = menu_button_id
instance = super().create(validated_data) instance = super().create(validated_data)
instance.dept.set([]) instance.dept.set([])
return instance return instance
def save(self, **kwargs):
if self.instance and self.initial_data.get('reset'):
return super().save(**kwargs)
return self.instance
class Meta: class Meta:
model = RoleMenuButtonPermission model = RoleMenuButtonPermission
fields = ['role_key', 'menu_button_value', 'data_range', 'dept', 'creator', 'dept_belong_id'] fields = ['role__key', 'menu_button__value', 'data_range', 'dept', 'creator', 'dept_belong_id']
read_only_fields = ["id"] read_only_fields = ["id"]
extra_kwargs = { extra_kwargs = {
'role': {'required': False}, 'role': {'required': False},

View File

@@ -1,12 +1,7 @@
[ [
{ {
"role_key": "admin", "role__key": "admin",
"menu_button_value": "menu:Search", "menu_button__value": "menu:Search",
"data_range": 0
},
{
"role_key": "public",
"menu_button_value":"menu:Search",
"data_range": 0 "data_range": 0
} }
] ]

View File

@@ -1,10 +1,12 @@
[ [
{ {
"role_key": "admin", "role__key": "admin",
"menu_component_name": "menu" "menu__web_path": "/system",
"menu__component_name": ""
}, },
{ {
"role_key": "public", "role__key": "admin",
"menu_component_name": "menu" "menu__web_path": "/menu",
"menu__component_name": "menu"
} }
] ]

View File

@@ -45,13 +45,13 @@ class Initialize(CoreInitialize):
""" """
初始化角色菜单信息 初始化角色菜单信息
""" """
self.init_base(RoleMenuInitSerializer, unique_fields=['role', 'menu']) self.init_base(RoleMenuInitSerializer, unique_fields=['role__key', 'menu__web_path', 'menu__component_name'])
def init_role_menu_button(self): def init_role_menu_button(self):
""" """
初始化角色菜单按钮信息 初始化角色菜单按钮信息
""" """
self.init_base(RoleMenuButtonInitSerializer, unique_fields=['role', 'menu_button']) self.init_base(RoleMenuButtonInitSerializer, unique_fields=['role__key', 'menu_button__value'])
def init_api_white_list(self): def init_api_white_list(self):
""" """