1.更新列权限初始化文件
This commit is contained in:
@@ -9,7 +9,7 @@ django.setup()
|
|||||||
from dvadmin.system.models import (
|
from dvadmin.system.models import (
|
||||||
Role, Dept, Users, Menu, MenuButton,
|
Role, Dept, Users, Menu, MenuButton,
|
||||||
ApiWhiteList, Dictionary, SystemConfig,
|
ApiWhiteList, Dictionary, SystemConfig,
|
||||||
RoleMenuPermission, RoleMenuButtonPermission
|
RoleMenuPermission, RoleMenuButtonPermission, MenuField
|
||||||
)
|
)
|
||||||
from dvadmin.utils.serializers import CustomModelSerializer
|
from dvadmin.utils.serializers import CustomModelSerializer
|
||||||
|
|
||||||
@@ -53,6 +53,16 @@ class MenuButtonInitSerializer(CustomModelSerializer):
|
|||||||
read_only_fields = ["id"]
|
read_only_fields = ["id"]
|
||||||
|
|
||||||
|
|
||||||
|
class MenuFieldInitSerializer(CustomModelSerializer):
|
||||||
|
"""
|
||||||
|
初始化列权限-序列化器
|
||||||
|
"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = MenuField
|
||||||
|
fields = ['id', 'menu','field_name','title','model']
|
||||||
|
read_only_fields = ["id"]
|
||||||
|
|
||||||
class MenuInitSerializer(CustomModelSerializer):
|
class MenuInitSerializer(CustomModelSerializer):
|
||||||
"""
|
"""
|
||||||
递归深度获取数信息(用于生成初始化json文件)
|
递归深度获取数信息(用于生成初始化json文件)
|
||||||
@@ -60,7 +70,7 @@ class MenuInitSerializer(CustomModelSerializer):
|
|||||||
name = serializers.CharField(required=False)
|
name = serializers.CharField(required=False)
|
||||||
children = serializers.SerializerMethodField()
|
children = serializers.SerializerMethodField()
|
||||||
menu_button = serializers.SerializerMethodField()
|
menu_button = serializers.SerializerMethodField()
|
||||||
|
menu_field = serializers.SerializerMethodField()
|
||||||
def get_children(self, obj: Menu):
|
def get_children(self, obj: Menu):
|
||||||
data = []
|
data = []
|
||||||
instance = Menu.objects.filter(parent_id=obj.id)
|
instance = Menu.objects.filter(parent_id=obj.id)
|
||||||
@@ -76,10 +86,18 @@ class MenuInitSerializer(CustomModelSerializer):
|
|||||||
data = list(instance.values('name', 'value', 'api', 'method'))
|
data = list(instance.values('name', 'value', 'api', 'method'))
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def get_menu_field(self, obj: Menu):
|
||||||
|
data = []
|
||||||
|
instance = obj.menufield_set.order_by('field_name')
|
||||||
|
if instance:
|
||||||
|
data = list(instance.values('field_name', 'title','model'))
|
||||||
|
return data
|
||||||
|
|
||||||
def save(self, **kwargs):
|
def save(self, **kwargs):
|
||||||
instance = super().save(**kwargs)
|
instance = super().save(**kwargs)
|
||||||
children = self.initial_data.get('children')
|
children = self.initial_data.get('children')
|
||||||
menu_button = self.initial_data.get('menu_button')
|
menu_button = self.initial_data.get('menu_button')
|
||||||
|
menu_field = self.initial_data.get('menu_field')
|
||||||
# 菜单表
|
# 菜单表
|
||||||
if children:
|
if children:
|
||||||
for menu_data in children:
|
for menu_data in children:
|
||||||
@@ -108,12 +126,24 @@ class MenuInitSerializer(CustomModelSerializer):
|
|||||||
serializer = MenuButtonInitSerializer(instance_obj, data=menu_button_data, request=self.request)
|
serializer = MenuButtonInitSerializer(instance_obj, data=menu_button_data, request=self.request)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
serializer.save()
|
serializer.save()
|
||||||
|
# 列权限
|
||||||
|
if menu_field:
|
||||||
|
for field_data in menu_field:
|
||||||
|
field_data['menu'] = instance.id
|
||||||
|
filter_data = {
|
||||||
|
'menu':field_data['menu'],
|
||||||
|
'field_name':field_data['field_name']
|
||||||
|
}
|
||||||
|
instance_obj = MenuField.objects.filter(**filter_data).first()
|
||||||
|
serializer = MenuFieldInitSerializer(instance_obj, data=field_data, request=self.request)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
serializer.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Menu
|
model = Menu
|
||||||
fields = ['name', 'icon', 'sort', 'is_link', 'is_catalog', 'web_path', 'component', 'component_name', 'status',
|
fields = ['name', 'icon', 'sort', 'is_link', 'is_catalog', 'web_path', 'component', 'component_name', 'status',
|
||||||
'cache', 'visible', 'parent', 'children', 'menu_button', 'creator', 'dept_belong_id']
|
'cache', 'visible', 'parent', 'children', 'menu_button','menu_field', 'creator', 'dept_belong_id']
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'creator': {'write_only': True},
|
'creator': {'write_only': True},
|
||||||
'dept_belong_id': {'write_only': True}
|
'dept_belong_id': {'write_only': True}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user