修改部门管理
This commit is contained in:
@@ -148,7 +148,24 @@ MEDIA_ROOT = os.path.join(BASE_DIR, 'media') #自己在根目录下创建media
|
||||
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
'DEFAULT_PAGINATION_CLASS': 'utils.pagination.CustomPagination',
|
||||
'PAGE_SIZE': 20,
|
||||
'DEFAULT_FILTER_BACKENDS': (
|
||||
'rest_framework.filters.OrderingFilter',
|
||||
'django_filters.rest_framework.DjangoFilterBackend',
|
||||
'rest_framework.filters.SearchFilter',
|
||||
),
|
||||
'DEFAULT_AUTHENTICATION_CLASSES': [
|
||||
'utils.authentication.BearerTokenAuthentication',
|
||||
'rest_framework.authentication.BasicAuthentication',
|
||||
'rest_framework.authentication.SessionAuthentication',
|
||||
'rest_framework.authentication.TokenAuthentication',
|
||||
],
|
||||
'DEFAULT_PERMISSION_CLASSES': [
|
||||
'rest_framework.permissions.AllowAny',
|
||||
]
|
||||
}
|
||||
|
||||
# celery 配置
|
||||
CELERY_BROKER_URL = 'redis://localhost:6379/6'
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
from django.contrib.auth.models import Group, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from rest_framework import serializers
|
||||
from .models import Department, Menu, MenuMeta, Role
|
||||
|
||||
@@ -8,9 +8,10 @@ from rest_framework.response import Response
|
||||
|
||||
from system.models import Dept
|
||||
from utils.custom_model_viewSet import CustomModelViewSet
|
||||
from utils.serializers import CustomModelSerializer
|
||||
|
||||
|
||||
class DeptSerializer(serializers.ModelSerializer):
|
||||
class DeptSerializer(CustomModelSerializer):
|
||||
"""部门序列化器"""
|
||||
children = serializers.SerializerMethodField()
|
||||
status_text = serializers.SerializerMethodField()
|
||||
|
||||
@@ -38,19 +38,19 @@ class CustomModelViewSet(viewsets.ModelViewSet):
|
||||
def list(self, request, *args, **kwargs):
|
||||
"""重写列表视图,支持软删除过滤"""
|
||||
queryset = self.get_queryset()
|
||||
|
||||
# 应用软删除过滤
|
||||
if self.enable_soft_delete:
|
||||
queryset = queryset.filter(**{self.soft_delete_field: False})
|
||||
|
||||
# 应用搜索和过滤
|
||||
queryset = self.filter_queryset(queryset)
|
||||
|
||||
page = self.paginate_queryset(queryset)
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
# 判断是否传了 page 参数
|
||||
if 'page' in request.query_params:
|
||||
page = self.paginate_queryset(queryset)
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
# 没有 page 参数,返回全部数据
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
return self._build_response(
|
||||
data=serializer.data,
|
||||
|
||||
@@ -10,6 +10,7 @@ from django.core.paginator import InvalidPage
|
||||
|
||||
class CustomPagination(PageNumberPagination):
|
||||
page_size = 20
|
||||
page_query_param = 'page' # 默认就是'page',如果你用别的名字要改成对应的
|
||||
page_size_query_param = "pageSize"
|
||||
max_page_size = 999
|
||||
django_paginator_class = DjangoPaginator
|
||||
|
||||
@@ -8,8 +8,6 @@ from rest_framework.serializers import ModelSerializer
|
||||
from django.utils.functional import cached_property
|
||||
from rest_framework.utils.serializer_helpers import BindingDict
|
||||
|
||||
from system.models import User
|
||||
|
||||
|
||||
class CustomModelSerializer(ModelSerializer):
|
||||
"""
|
||||
@@ -18,16 +16,6 @@ class CustomModelSerializer(ModelSerializer):
|
||||
"""
|
||||
# 修改人的审计字段名称, 默认modifier, 继承使用时可自定义覆盖
|
||||
modifier_field_id = 'modifier'
|
||||
modifier_name = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
def get_modifier_name(self, instance):
|
||||
if not hasattr(instance, 'modifier'):
|
||||
return None
|
||||
queryset = User.objects.filter(id=instance.modifier).values_list('name', flat=True).first()
|
||||
if queryset:
|
||||
return queryset
|
||||
return None
|
||||
|
||||
# 创建人的审计字段名称, 默认creator, 继承使用时可自定义覆盖
|
||||
creator_field_id = 'creator'
|
||||
# 添加默认时间返回格式
|
||||
@@ -43,16 +31,16 @@ class CustomModelSerializer(ModelSerializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
if self.request:
|
||||
if self.modifier_field_id in self.fields.fields:
|
||||
if self.modifier_field_id in self.fields:
|
||||
validated_data[self.modifier_field_id] = self.get_request_username()
|
||||
if self.creator_field_id in self.fields.fields:
|
||||
if self.creator_field_id in self.fields:
|
||||
validated_data[self.creator_field_id] = self.get_request_username()
|
||||
return super().create(validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
if self.request:
|
||||
if hasattr(self.instance, self.modifier_field_id):
|
||||
self.instance.modifier = self.get_request_username()
|
||||
validated_data[self.modifier_field_id] = self.get_request_username()
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
def get_request_username(self):
|
||||
|
||||
Reference in New Issue
Block a user