角色唯一标识

This commit is contained in:
caoqianming 2022-04-11 16:42:00 +08:00
parent e85a1ac0f6
commit 080d13b37c
3 changed files with 23 additions and 6 deletions

View File

@ -3,4 +3,6 @@ PASSWORD_NOT_SAME = {"code":"password_not_same", "detail":"新旧密码不一致
OLD_PASSWORD_WRONG = {"code":"old_password_wrong", "detail":"旧密码错误"}
PHONE_F_WRONG = {"code":"phone_f_wrong", "detail":"手机号格式错误"}
PHONE_EXIST = {"code":"phone_exist", "detail":"手机号已存在"}
USERNAME_EXIST = {"code":"username_exist", "detail":"账户已存在"}
USERNAME_EXIST = {"code":"username_exist", "detail":"账户已存在"}
ROLE_NAME_EXIST = {"code":"role_name_exist", "detail":"角色名已存在"}
ROLE_CODE_EXIST = {"code":"role_code_exist", "detail":"角色标识已存在"}

View File

@ -3,7 +3,7 @@ import re
from django_celery_beat.models import PeriodicTask, CrontabSchedule, IntervalSchedule
from rest_framework import serializers
from django_celery_results.models import TaskResult
from apps.system.errors import PHONE_EXIST, PHONE_F_WRONG, USERNAME_EXIST
from apps.system.errors import PHONE_EXIST, PHONE_F_WRONG, ROLE_CODE_EXIST, ROLE_NAME_EXIST, USERNAME_EXIST
from apps.utils.serializers import CustomModelSerializer
from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE
from .models import (Dict, DictType, File, Dept, Permission, Post,
@ -140,13 +140,27 @@ class RoleCreateUpdateSerializer(CustomModelSerializer):
"""
角色序列化
"""
name = serializers.CharField(label="名称", validators=[
UniqueValidator(queryset=Role.objects.all(), message='已存在相同名称的角色')])
code = serializers.CharField(label="标识", validators=[
UniqueValidator(queryset=Role.objects.all(), message='已存在相同标识的角色')])
class Meta:
model = Role
exclude = EXCLUDE_FIELDS
def create(self, validated_data):
if validated_data.get('name', None):
if Role.objects.filter(name=validated_data['name']).exists():
raise serializers.ValidationError(**ROLE_NAME_EXIST)
if validated_data.get('code', None):
if Role.objects.filter(code=validated_data['code']).exists():
raise serializers.ValidationError(**ROLE_CODE_EXIST)
return super().create(validated_data)
def update(self, instance, validated_data):
if validated_data.get('name', None):
if Role.objects.filter(name=validated_data['name']).exclude(id=instance.id).exists():
raise serializers.ValidationError(**ROLE_NAME_EXIST)
if validated_data.get('code', None):
if Role.objects.filter(code=validated_data['code']).exclude(id=instance.id).exists():
raise serializers.ValidationError(**ROLE_CODE_EXIST)
return super().update(instance, validated_data)
class PermissionSerializer(CustomModelSerializer):
"""

View File

@ -254,6 +254,7 @@ class RoleViewSet(CustomModelViewSet):
serializer_class = RoleSerializer
create_serializer_class = RoleCreateUpdateSerializer
update_serializer_class = RoleCreateUpdateSerializer
partial_update_serializer_class = RoleCreateUpdateSerializer
search_fields = ['name', 'code']