From 7ed699593c5f60fe1dd5a34d5e624365e9e59dff Mon Sep 17 00:00:00 2001 From: china_ahhui Date: Sun, 2 Jun 2024 11:28:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BB=A5=E5=8F=8A=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=88=E8=A7=92=E8=89=B2=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=92=8C=E8=A7=92=E8=89=B2=E8=8F=9C=E5=8D=95=E6=8C=89=E9=92=AE?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dvadmin/system/fixtures/initSerializer.py | 35 +++++++++++-------- .../init_rolemenubuttonpermission.json | 9 ++--- .../fixtures/init_rolemenupermission.json | 10 +++--- backend/dvadmin/system/fixtures/initialize.py | 4 +-- 4 files changed, 31 insertions(+), 27 deletions(-) diff --git a/backend/dvadmin/system/fixtures/initSerializer.py b/backend/dvadmin/system/fixtures/initSerializer.py index a264ed7..9ed094f 100644 --- a/backend/dvadmin/system/fixtures/initSerializer.py +++ b/backend/dvadmin/system/fixtures/initSerializer.py @@ -175,22 +175,24 @@ class RoleMenuInitSerializer(CustomModelSerializer): """ 初始化角色菜单(用于生成初始化json文件) """ - role_key = serializers.CharField(max_length=100, required=True) - menu_component_name = serializers.CharField(max_length=100, required=True) + role__key = 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): init_data = self.initial_data - validated_data.pop('menu_component_name') - validated_data.pop('role_key') - role_id = Role.objects.filter(key=init_data['role_key']).first() - menu_id = Menu.objects.filter(component_name=init_data['menu_component_name']).first() + validated_data.pop('menu__web_path') + validated_data.pop('menu__component_name') + validated_data.pop('role__key') + 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['menu'] = menu_id return super().create(validated_data) class Meta: 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"] extra_kwargs = { 'role': {'required': False}, @@ -204,25 +206,30 @@ class RoleMenuButtonInitSerializer(CustomModelSerializer): """ 初始化角色菜单按钮(用于生成初始化json文件) """ - role_key = serializers.CharField(max_length=100, required=True) - menu_button_value = 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) data_range = serializers.CharField(max_length=100, required=False) def create(self, validated_data): init_data = self.initial_data - validated_data.pop('menu_button_value') - validated_data.pop('role_key') - role_id = Role.objects.filter(key=init_data['role_key']).first() - menu_button_id = MenuButton.objects.filter(value=init_data['menu_button_value']).first() + validated_data.pop('menu_button__value') + validated_data.pop('role__key') + role_id = Role.objects.filter(key=init_data['role__key']).first() + menu_button_id = MenuButton.objects.filter(value=init_data['menu_button__value']).first() validated_data['role'] = role_id validated_data['menu_button'] = menu_button_id instance = super().create(validated_data) instance.dept.set([]) return instance + def save(self, **kwargs): + if self.instance and self.initial_data.get('reset'): + return super().save(**kwargs) + return self.instance + class Meta: 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"] extra_kwargs = { 'role': {'required': False}, diff --git a/backend/dvadmin/system/fixtures/init_rolemenubuttonpermission.json b/backend/dvadmin/system/fixtures/init_rolemenubuttonpermission.json index d4b4700..8057cd8 100644 --- a/backend/dvadmin/system/fixtures/init_rolemenubuttonpermission.json +++ b/backend/dvadmin/system/fixtures/init_rolemenubuttonpermission.json @@ -1,12 +1,7 @@ [ { - "role_key": "admin", - "menu_button_value": "menu:Search", - "data_range": 0 - }, - { - "role_key": "public", - "menu_button_value":"menu:Search", + "role__key": "admin", + "menu_button__value": "menu:Search", "data_range": 0 } ] diff --git a/backend/dvadmin/system/fixtures/init_rolemenupermission.json b/backend/dvadmin/system/fixtures/init_rolemenupermission.json index 8d09e8d..7a6244e 100644 --- a/backend/dvadmin/system/fixtures/init_rolemenupermission.json +++ b/backend/dvadmin/system/fixtures/init_rolemenupermission.json @@ -1,10 +1,12 @@ [ { - "role_key": "admin", - "menu_component_name": "menu" + "role__key": "admin", + "menu__web_path": "/system", + "menu__component_name": "" }, { - "role_key": "public", - "menu_component_name": "menu" + "role__key": "admin", + "menu__web_path": "/menu", + "menu__component_name": "menu" } ] diff --git a/backend/dvadmin/system/fixtures/initialize.py b/backend/dvadmin/system/fixtures/initialize.py index 74d89d7..f409643 100644 --- a/backend/dvadmin/system/fixtures/initialize.py +++ b/backend/dvadmin/system/fixtures/initialize.py @@ -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): """ 初始化角色菜单按钮信息 """ - 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): """