diff --git a/backend/dvadmin/system/fixtures/initSerializer.py b/backend/dvadmin/system/fixtures/initSerializer.py index 9ed094f..3490b71 100644 --- a/backend/dvadmin/system/fixtures/initSerializer.py +++ b/backend/dvadmin/system/fixtures/initSerializer.py @@ -175,15 +175,21 @@ class RoleMenuInitSerializer(CustomModelSerializer): """ 初始化角色菜单(用于生成初始化json文件) """ - 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) + role__key = serializers.CharField(source='role.key') + menu__web_path = serializers.CharField(source='menu.web_path') + menu__component_name = serializers.CharField(source='menu.component_name', allow_blank=True) + + def update(self, instance, validated_data): + init_data = self.initial_data + 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().update(instance, validated_data) + def create(self, validated_data): init_data = self.initial_data - 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 @@ -192,7 +198,7 @@ class RoleMenuInitSerializer(CustomModelSerializer): class Meta: model = RoleMenuPermission - fields = ['role__key', 'menu__web_path', '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}, @@ -206,8 +212,8 @@ 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(source='role.key') + menu_button__value = serializers.CharField(source='menu_button.value') data_range = serializers.CharField(max_length=100, required=False) def create(self, validated_data): diff --git a/backend/dvadmin/system/management/commands/generate_init_json.py b/backend/dvadmin/system/management/commands/generate_init_json.py index b074344..6ce83b0 100644 --- a/backend/dvadmin/system/management/commands/generate_init_json.py +++ b/backend/dvadmin/system/management/commands/generate_init_json.py @@ -10,7 +10,7 @@ django.setup() from django.core.management.base import BaseCommand from application.settings import BASE_DIR -from dvadmin.system.models import Menu, Users, Dept, Role, ApiWhiteList, Dictionary, SystemConfig +from dvadmin.system.models import Menu, Users, Dept, Role, ApiWhiteList, Dictionary, SystemConfig, RoleMenuButtonPermission, RoleMenuPermission from dvadmin.system.fixtures.initSerializer import UsersInitSerializer, DeptInitSerializer, RoleInitSerializer, \ MenuInitSerializer, ApiWhiteListInitSerializer, DictionaryInitSerializer, SystemConfigInitSerializer, \ RoleMenuInitSerializer, RoleMenuButtonInitSerializer @@ -57,6 +57,12 @@ class Command(BaseCommand): def generate_system_config(self): self.serializer_data(SystemConfigInitSerializer, SystemConfig.objects.filter(parent_id__isnull=True)) + def generate_role_menu(self): + self.serializer_data(RoleMenuInitSerializer, RoleMenuPermission.objects.all()) + + def generate_role_menu_button(self): + self.serializer_data(RoleMenuButtonInitSerializer, RoleMenuButtonPermission.objects.all()) + def handle(self, *args, **options): generate_name = options.get('generate_name') generate_name_dict = { @@ -67,6 +73,8 @@ class Command(BaseCommand): "api_white_list": self.generate_api_white_list, "dictionary": self.generate_dictionary, "system_config": self.generate_system_config, + "role_menu": self.generate_role_menu, + "role_menu_button": self.generate_role_menu_button, } if not generate_name: for ele in generate_name_dict.keys():