修改用户信息
This commit is contained in:
parent
080d13b37c
commit
074196422a
|
@ -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='手机号'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -61,8 +61,8 @@ class Role(CommonAModel):
|
||||||
"""
|
"""
|
||||||
角色
|
角色
|
||||||
"""
|
"""
|
||||||
name = models.CharField('角色', max_length=32, unique=True)
|
name = models.CharField('名称', max_length=32)
|
||||||
code = models.CharField('角色标识', max_length=32, unique=True, null=True, blank=True)
|
code = models.CharField('角色标识', max_length=32, null=True, blank=True)
|
||||||
perms = models.ManyToManyField(Permission, blank=True, verbose_name='功能权限', related_name='role_perms')
|
perms = models.ManyToManyField(Permission, blank=True, verbose_name='功能权限', related_name='role_perms')
|
||||||
description = models.CharField('描述', max_length=50, blank=True, null=True)
|
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)
|
name = models.CharField('名称', max_length=32)
|
||||||
code = models.CharField('岗位标识', max_length=32, unique=True, null=True, blank=True)
|
code = models.CharField('岗位标识', max_length=32, null=True, blank=True)
|
||||||
description = models.CharField('描述', max_length=50, blank=True, null=True)
|
description = models.CharField('描述', max_length=50, blank=True, null=True)
|
||||||
roles = models.ManyToManyField(Role, verbose_name='关联角色', related_name='post_roles')
|
roles = models.ManyToManyField(Role, verbose_name='关联角色', related_name='post_roles')
|
||||||
POST_DATA_ALL = 10
|
POST_DATA_ALL = 10
|
||||||
|
@ -114,7 +114,7 @@ class User(AbstractUser, CommonBModel):
|
||||||
"""
|
"""
|
||||||
name = models.CharField('姓名', max_length=20, null=True, blank=True)
|
name = models.CharField('姓名', max_length=20, null=True, blank=True)
|
||||||
phone = models.CharField('手机号', max_length=11,
|
phone = models.CharField('手机号', max_length=11,
|
||||||
null=True, blank=True, unique=True)
|
null=True, blank=True)
|
||||||
avatar = models.CharField(
|
avatar = models.CharField(
|
||||||
'头像', default='/media/default/avatar.png', max_length=100, null=True, blank=True)
|
'头像', default='/media/default/avatar.png', max_length=100, null=True, blank=True)
|
||||||
superior = models.ForeignKey(
|
superior = models.ForeignKey(
|
||||||
|
@ -152,7 +152,7 @@ class DictType(CommonAModel):
|
||||||
数据字典类型
|
数据字典类型
|
||||||
"""
|
"""
|
||||||
name = models.CharField('名称', max_length=30)
|
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,
|
parent = models.ForeignKey('self', null=True, blank=True,
|
||||||
on_delete=models.SET_NULL, verbose_name='父')
|
on_delete=models.SET_NULL, verbose_name='父')
|
||||||
|
|
||||||
|
|
|
@ -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:
|
class Meta:
|
||||||
model = Role
|
model = Role
|
||||||
exclude = EXCLUDE_FIELDS
|
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):
|
class PermissionSerializer(CustomModelSerializer):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -4,6 +4,8 @@ from rest_framework.response import Response
|
||||||
from rest_framework import exceptions
|
from rest_framework import exceptions
|
||||||
from rest_framework.views import set_rollback
|
from rest_framework.views import set_rollback
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
import traceback
|
||||||
|
from server.settings import myLogger
|
||||||
|
|
||||||
def custom_exception_hander(exc, context):
|
def custom_exception_hander(exc, context):
|
||||||
"""
|
"""
|
||||||
|
@ -32,5 +34,6 @@ def custom_exception_hander(exc, context):
|
||||||
set_rollback()
|
set_rollback()
|
||||||
data['request_id'] = request_id
|
data['request_id'] = request_id
|
||||||
return Response(data, status=exc.status_code, headers=headers)
|
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)
|
return Response(data={'err_code':'server_error', 'err_msg':'服务器错误', 'request_id': request_id}, status=500)
|
|
@ -100,10 +100,6 @@ class MyLoggingMixin(object):
|
||||||
|
|
||||||
def handle_exception(self, exc):
|
def handle_exception(self, exc):
|
||||||
response = super().handle_exception(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
|
return response
|
||||||
|
|
||||||
def finalize_response(self, request, response, *args, **kwargs):
|
def finalize_response(self, request, response, *args, **kwargs):
|
||||||
|
|
|
@ -289,13 +289,13 @@ LOGGING = {
|
||||||
'loggers': {
|
'loggers': {
|
||||||
# 类型 为 django 处理所有类型的日志, 默认调用
|
# 类型 为 django 处理所有类型的日志, 默认调用
|
||||||
'django': {
|
'django': {
|
||||||
'handlers': ['default', 'console', 'error'],
|
'handlers': ['default', 'console'],
|
||||||
'level': 'INFO',
|
'level': 'INFO',
|
||||||
'propagate': False
|
'propagate': False
|
||||||
},
|
},
|
||||||
# log 调用时需要当作参数传入
|
# log 调用时需要当作参数传入
|
||||||
'log': {
|
'log': {
|
||||||
'handlers': ['error', 'info'],
|
'handlers': ['error', 'info', 'console'],
|
||||||
'level': 'INFO',
|
'level': 'INFO',
|
||||||
'propagate': True
|
'propagate': True
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue