From 1f71024921c512caea6100f0a1395d2f5d51ebb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Mon, 11 Jul 2022 09:39:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/hrm/filters.py | 2 +- apps/hrm/views.py | 7 ++++++- apps/system/filters.py | 5 +++-- apps/system/views.py | 16 +++++++++++++--- apps/vm/services.py | 2 +- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/apps/hrm/filters.py b/apps/hrm/filters.py index f8e9dd66..40900c3d 100755 --- a/apps/hrm/filters.py +++ b/apps/hrm/filters.py @@ -23,7 +23,7 @@ class EmployeeFilterSet(filters.FilterSet): class Meta: model = Employee - fields = ['job_state', 'show_atwork'] + fields = ['job_state', 'show_atwork', 'type'] class NotWorkRemarkFilterSet(filters.FilterSet): diff --git a/apps/hrm/views.py b/apps/hrm/views.py index d39116bf..2dc8e51d 100755 --- a/apps/hrm/views.py +++ b/apps/hrm/views.py @@ -31,7 +31,7 @@ class EmployeeViewSet(CustomModelViewSet): """ 人员管理 """ - queryset = Employee.objects.filter(type='employee') + queryset = Employee.objects.all() select_related_fields = ['user'] filterset_class = EmployeeFilterSet serializer_class = EmployeeSerializer @@ -41,6 +41,11 @@ class EmployeeViewSet(CustomModelViewSet): search_fields = ['name', 'number', 'user__username'] ordering = ['-pk'] + def filter_queryset(self, queryset): + if not self.detail: + self.request.query_params.setdefault('type', 'employee') + return super().filter_queryset(queryset) + @action(methods=['get'], detail=False, perms_map={'get': '*'}, serializer_class=serializers.Serializer) def info(self, request, pk=None): diff --git a/apps/system/filters.py b/apps/system/filters.py index 3fd36da6..141986ea 100755 --- a/apps/system/filters.py +++ b/apps/system/filters.py @@ -2,7 +2,7 @@ from django_filters import rest_framework as filters from .models import User -class UserFilter(filters.FilterSet): +class UserFilterSet(filters.FilterSet): class Meta: model = User fields = { @@ -11,5 +11,6 @@ class UserFilter(filters.FilterSet): 'posts': ['exact'], 'post': ['exact'], 'belong_dept': ['exact'], - 'depts': ['exact'] + 'depts': ['exact'], + 'type': ['exact'] } diff --git a/apps/system/views.py b/apps/system/views.py index 71b1402b..027be07f 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -15,13 +15,13 @@ from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView from apps.system.errors import FUNC_ERROR, OLD_PASSWORD_WRONG, PASSWORD_NOT_SAME, SCHEDULE_WRONG +from apps.system.filters import UserFilterSet # from django_q.models import Task as QTask, Schedule as QSchedule from apps.utils.mixins import (CustomCreateModelMixin) from django.conf import settings from apps.utils.permission import ALL_PERMS, get_user_perms_map from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from server.celery import app as celery_app -from .filters import UserFilter from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User, UserPost) from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer, @@ -313,6 +313,11 @@ class DeptViewSet(CustomModelViewSet): filterset_fields = ['type'] search_fields = ['name'] + def filter_queryset(self, queryset): + if not self.detail: + self.request.query_params.setdefault('type', 'dept') + return super().filter_queryset(queryset) + def get_queryset(self): type = self.request.query_params.get('type', None) if type: @@ -386,15 +391,20 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo class UserViewSet(CustomModelViewSet): - queryset = User.objects.filter(type='employee') + queryset = User.objects.all() serializer_class = UserListSerializer create_serializer_class = UserCreateSerializer update_serializer_class = UserUpdateSerializer - filterset_class = UserFilter + filterset_class = UserFilterSet search_fields = ['username', 'name', 'phone', 'email'] select_related_fields = ['superior', 'belong_dept'] prefetch_related_fields = ['posts'] + def filter_queryset(self, queryset): + if not self.detail: + self.request.query_params.setdefault('type', 'employee') + return super().filter_queryset(queryset) + def create(self, request, *args, **kwargs): """创建用户 diff --git a/apps/vm/services.py b/apps/vm/services.py index 842a59fd..7f19943a 100644 --- a/apps/vm/services.py +++ b/apps/vm/services.py @@ -37,7 +37,7 @@ def visit_audit_end(ticket): ep.photo = visitor.photo ep.save() visitor.employee = ep - visitor.visit = visit #更新当前所属访客项目 + visitor.visit = visit # 更新当前所属访客项目 visitor.save() # 同步至大华人员库并下发人脸 Thread(target=HrmService.sync_dahua_employee, args=(ep, '', visit.visit_time, visit.leave_time)).start()