修改用户信息

This commit is contained in:
caoqianming 2022-04-12 08:36:50 +08:00
parent 080d13b37c
commit 074196422a
6 changed files with 59 additions and 31 deletions

View File

@ -0,0 +1,43 @@
# Generated by Django 3.2.12 on 2022-04-11 13:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('system', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='dicttype',
name='code',
field=models.CharField(max_length=30, verbose_name='标识'),
),
migrations.AlterField(
model_name='post',
name='code',
field=models.CharField(blank=True, max_length=32, null=True, verbose_name='岗位标识'),
),
migrations.AlterField(
model_name='post',
name='name',
field=models.CharField(max_length=32, verbose_name='名称'),
),
migrations.AlterField(
model_name='role',
name='code',
field=models.CharField(blank=True, max_length=32, null=True, verbose_name='角色标识'),
),
migrations.AlterField(
model_name='role',
name='name',
field=models.CharField(max_length=32, verbose_name='名称'),
),
migrations.AlterField(
model_name='user',
name='phone',
field=models.CharField(blank=True, max_length=11, null=True, verbose_name='手机号'),
),
]

View File

@ -61,8 +61,8 @@ class Role(CommonAModel):
"""
角色
"""
name = models.CharField('角色', max_length=32, unique=True)
code = models.CharField('角色标识', max_length=32, unique=True, null=True, blank=True)
name = models.CharField('名称', max_length=32)
code = models.CharField('角色标识', max_length=32, null=True, blank=True)
perms = models.ManyToManyField(Permission, blank=True, verbose_name='功能权限', related_name='role_perms')
description = models.CharField('描述', max_length=50, blank=True, null=True)
@ -79,8 +79,8 @@ class Post(CommonAModel):
"""
职位/岗位
"""
name = models.CharField('名称', max_length=32, unique=True)
code = models.CharField('岗位标识', max_length=32, unique=True, null=True, blank=True)
name = models.CharField('名称', max_length=32)
code = models.CharField('岗位标识', max_length=32, null=True, blank=True)
description = models.CharField('描述', max_length=50, blank=True, null=True)
roles = models.ManyToManyField(Role, verbose_name='关联角色', related_name='post_roles')
POST_DATA_ALL = 10
@ -114,7 +114,7 @@ class User(AbstractUser, CommonBModel):
"""
name = models.CharField('姓名', max_length=20, null=True, blank=True)
phone = models.CharField('手机号', max_length=11,
null=True, blank=True, unique=True)
null=True, blank=True)
avatar = models.CharField(
'头像', default='/media/default/avatar.png', max_length=100, null=True, blank=True)
superior = models.ForeignKey(
@ -152,7 +152,7 @@ class DictType(CommonAModel):
数据字典类型
"""
name = models.CharField('名称', max_length=30)
code = models.CharField('标识', unique=True, max_length=30)
code = models.CharField('标识', max_length=30)
parent = models.ForeignKey('self', null=True, blank=True,
on_delete=models.SET_NULL, verbose_name='')

View File

@ -140,27 +140,13 @@ 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

@ -4,6 +4,8 @@ from rest_framework.response import Response
from rest_framework import exceptions
from rest_framework.views import set_rollback
from django.utils.translation import gettext_lazy as _
import traceback
from server.settings import myLogger
def custom_exception_hander(exc, context):
"""
@ -32,5 +34,6 @@ def custom_exception_hander(exc, context):
set_rollback()
data['request_id'] = request_id
return Response(data, status=exc.status_code, headers=headers)
err_str = traceback.format_exc()
myLogger.error('{}-{}'.format(request_id, err_str))
return Response(data={'err_code':'server_error', 'err_msg':'服务器错误', 'request_id': request_id}, status=500)

View File

@ -100,10 +100,6 @@ class MyLoggingMixin(object):
def handle_exception(self, exc):
response = super().handle_exception(exc)
if response.status_code >= 500: # 如果是服务器错误额外记录日志到文件
err_str = traceback.format_exc()
self.log["errors"] = err_str
myLogger.error('{}-{}'.format(self.log['id'], err_str))
return response
def finalize_response(self, request, response, *args, **kwargs):

View File

@ -289,13 +289,13 @@ LOGGING = {
'loggers': {
# 类型 为 django 处理所有类型的日志, 默认调用
'django': {
'handlers': ['default', 'console', 'error'],
'handlers': ['default', 'console'],
'level': 'INFO',
'propagate': False
},
# log 调用时需要当作参数传入
'log': {
'handlers': ['error', 'info'],
'handlers': ['error', 'info', 'console'],
'level': 'INFO',
'propagate': True
},