| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- from rest_framework import serializers
- from .models import ListModel, TypeListModel, Role, Permission
- from utils import datasolve
- class StaffGetSerializer(serializers.ModelSerializer):
- staff_name = serializers.CharField(read_only=True, required=False)
- staff_type = serializers.CharField(read_only=True, required=False)
- check_code = serializers.IntegerField(read_only=True, required=False)
- create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- class Meta:
- model = ListModel
- exclude = ['openid', 'is_delete', ]
- read_only_fields = ['id', ]
- class StaffPostSerializer(serializers.ModelSerializer):
- openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate])
- staff_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
- staff_type = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
- check_code = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate])
- class Meta:
- model = ListModel
- exclude = ['is_delete', ]
- read_only_fields = ['id', 'create_time', 'update_time', ]
- class StaffUpdateSerializer(serializers.ModelSerializer):
- staff_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
- staff_type = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
-
- class Meta:
- model = ListModel
- exclude = ['openid', 'is_delete', ]
- read_only_fields = ['id', 'create_time', 'update_time', 'appid']
- class StaffPartialUpdateSerializer(serializers.ModelSerializer):
- staff_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
- staff_type = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
- class Meta:
- model = ListModel
- exclude = ['openid', 'is_delete', ]
- read_only_fields = ['id', 'create_time', 'update_time', ]
- class FileRenderSerializer(serializers.ModelSerializer):
- staff_name = serializers.CharField(read_only=False, required=False)
- staff_type = serializers.CharField(read_only=False, required=False)
- create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- class Meta:
- model = ListModel
- ref_name = 'StaffFileRenderSerializer'
- exclude = ['openid', 'is_delete', ]
- class StaffTypeGetSerializer(serializers.ModelSerializer):
- staff_type = serializers.CharField(read_only=True, required=False)
- creater = serializers.CharField(read_only=True, required=False)
- create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- class Meta:
- model = TypeListModel
- exclude = ['openid']
- read_only_fields = ['id', ]
- class userStaffGetSerializer(serializers.ModelSerializer):
- staff_name = serializers.CharField(read_only=True, required=False)
- staff_type = serializers.CharField(read_only=True, required=False)
- create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- class Meta:
- model = ListModel
- exclude = ['openid', 'is_delete', 'check_code', ]
- read_only_fields = ['id', ]
- class userStaffPostSerializer(serializers.ModelSerializer):
- openid = serializers.CharField(read_only=False, required=False, validators=[datasolve.openid_validate])
- staff_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
- staff_type = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
- check_code = serializers.IntegerField(read_only=False, required=True, validators=[datasolve.data_validate])
- class Meta:
- model = ListModel
- exclude = ['is_delete', ]
- read_only_fields = ['id', 'create_time', 'update_time', ]
- class userStaffUpdateSerializer(serializers.ModelSerializer):
- staff_name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
- staff_type = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
- class Meta:
- model = ListModel
- exclude = ['openid', 'is_delete', ]
- read_only_fields = ['id', 'create_time', 'update_time','appid' ]
- class userStaffPartialUpdateSerializer(serializers.ModelSerializer):
- staff_name = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
- staff_type = serializers.CharField(read_only=False, required=False, validators=[datasolve.data_validate])
- class Meta:
- model = ListModel
- exclude = ['openid', 'is_delete', ]
- read_only_fields = ['id', 'create_time', 'update_time', ]
- class userFileRenderSerializer(serializers.ModelSerializer):
- staff_name = serializers.CharField(read_only=False, required=False)
- staff_type = serializers.CharField(read_only=False, required=False)
- create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- class Meta:
- model = ListModel
- ref_name = 'StaffFileRenderSerializer'
- exclude = ['openid', 'is_delete', ]
- class userStaffTypeGetSerializer(serializers.ModelSerializer):
- staff_type = serializers.CharField(read_only=True, required=False)
- creater = serializers.CharField(read_only=True, required=False)
- create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- update_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
- class Meta:
- model = TypeListModel
- exclude = ['openid']
- read_only_fields = ['id', ]
- class RolePOSTSerializer(serializers.ModelSerializer):
- name = serializers.CharField(read_only=False, required=True, validators=[datasolve.data_validate])
- description = serializers.CharField(read_only=False, required=False, allow_blank=True)
- permissions = serializers.PrimaryKeyRelatedField(
- many=True,
- queryset=Permission.objects.all(),
- required=False
- )
-
- class Meta:
- model = Role
- fields = ['id', 'name', 'description', 'permissions']
- read_only_fields = ['id', ]
- class RoleGETSerializer(serializers.ModelSerializer):
- permissions_group = serializers.SerializerMethodField()
-
- class Meta:
- model = Role
- fields = ['id', 'name', 'description', 'permissions_group']
-
- def get_permissions_group(self, obj):
- # 获取角色关联的所有权限并预取数据
- permissions = obj.permissions.all().order_by('page', 'component')
-
- # 按page字段分组
- grouped = {}
- for perm in permissions:
- page = perm.page
- if page not in grouped:
- grouped[page] = []
- # 使用PermissionSerializer序列化每个权限对象
- serializer = PermissionSerializer(perm)
- grouped[page].append(serializer.data)
-
- # 转换为前端需要的格式
- return [{"page": page, "permissions": perms} for page, perms in grouped.items()]
- # 只返回page,不需要返回componet等详细信息
- class RolePageGETSerializer(serializers.ModelSerializer):
- permissions_group = serializers.SerializerMethodField()
-
- class Meta:
- model = Role
- fields = ['id', 'name', 'description', 'permissions_group']
-
- def get_permissions_group(self, obj):
- # 获取角色关联的所有权限并预取数据
- permissions = obj.permissions.all().order_by('primary_page','page', 'component')
-
- # 按page字段分组,只处理component为null的权限
- page_access = {}
- for perm in permissions:
- # 只处理页面访问权限(component为null)
- if perm.component is None:
- page_access[perm.primary_page] = perm.enabled
-
- # 转换为前端需要的格式
- return [{"page": page, "enabled": enabled} for page, enabled in page_access.items()]
- class RoleSerializer(serializers.ModelSerializer):
- class Meta:
- model = Role
- fields = '__all__'
- class PermissionSerializer(serializers.ModelSerializer):
- class Meta:
- model = Permission
- fields = '__all__'
|