人员筛选

This commit is contained in:
曹前明 2022-07-11 09:39:07 +08:00
parent a2d8e8e1eb
commit 1f71024921
5 changed files with 24 additions and 8 deletions

View File

@ -23,7 +23,7 @@ class EmployeeFilterSet(filters.FilterSet):
class Meta: class Meta:
model = Employee model = Employee
fields = ['job_state', 'show_atwork'] fields = ['job_state', 'show_atwork', 'type']
class NotWorkRemarkFilterSet(filters.FilterSet): class NotWorkRemarkFilterSet(filters.FilterSet):

View File

@ -31,7 +31,7 @@ class EmployeeViewSet(CustomModelViewSet):
""" """
人员管理 人员管理
""" """
queryset = Employee.objects.filter(type='employee') queryset = Employee.objects.all()
select_related_fields = ['user'] select_related_fields = ['user']
filterset_class = EmployeeFilterSet filterset_class = EmployeeFilterSet
serializer_class = EmployeeSerializer serializer_class = EmployeeSerializer
@ -41,6 +41,11 @@ class EmployeeViewSet(CustomModelViewSet):
search_fields = ['name', 'number', 'user__username'] search_fields = ['name', 'number', 'user__username']
ordering = ['-pk'] 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': '*'}, @action(methods=['get'], detail=False, perms_map={'get': '*'},
serializer_class=serializers.Serializer) serializer_class=serializers.Serializer)
def info(self, request, pk=None): def info(self, request, pk=None):

View File

@ -2,7 +2,7 @@ from django_filters import rest_framework as filters
from .models import User from .models import User
class UserFilter(filters.FilterSet): class UserFilterSet(filters.FilterSet):
class Meta: class Meta:
model = User model = User
fields = { fields = {
@ -11,5 +11,6 @@ class UserFilter(filters.FilterSet):
'posts': ['exact'], 'posts': ['exact'],
'post': ['exact'], 'post': ['exact'],
'belong_dept': ['exact'], 'belong_dept': ['exact'],
'depts': ['exact'] 'depts': ['exact'],
'type': ['exact']
} }

View File

@ -15,13 +15,13 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.views import APIView from rest_framework.views import APIView
from apps.system.errors import FUNC_ERROR, OLD_PASSWORD_WRONG, PASSWORD_NOT_SAME, SCHEDULE_WRONG 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 django_q.models import Task as QTask, Schedule as QSchedule
from apps.utils.mixins import (CustomCreateModelMixin) from apps.utils.mixins import (CustomCreateModelMixin)
from django.conf import settings from django.conf import settings
from apps.utils.permission import ALL_PERMS, get_user_perms_map from apps.utils.permission import ALL_PERMS, get_user_perms_map
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from server.celery import app as celery_app from server.celery import app as celery_app
from .filters import UserFilter
from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User, from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User,
UserPost) UserPost)
from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer, from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer,
@ -313,6 +313,11 @@ class DeptViewSet(CustomModelViewSet):
filterset_fields = ['type'] filterset_fields = ['type']
search_fields = ['name'] 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): def get_queryset(self):
type = self.request.query_params.get('type', None) type = self.request.query_params.get('type', None)
if type: if type:
@ -386,15 +391,20 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
class UserViewSet(CustomModelViewSet): class UserViewSet(CustomModelViewSet):
queryset = User.objects.filter(type='employee') queryset = User.objects.all()
serializer_class = UserListSerializer serializer_class = UserListSerializer
create_serializer_class = UserCreateSerializer create_serializer_class = UserCreateSerializer
update_serializer_class = UserUpdateSerializer update_serializer_class = UserUpdateSerializer
filterset_class = UserFilter filterset_class = UserFilterSet
search_fields = ['username', 'name', 'phone', 'email'] search_fields = ['username', 'name', 'phone', 'email']
select_related_fields = ['superior', 'belong_dept'] select_related_fields = ['superior', 'belong_dept']
prefetch_related_fields = ['posts'] 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): def create(self, request, *args, **kwargs):
"""创建用户 """创建用户

View File

@ -37,7 +37,7 @@ def visit_audit_end(ticket):
ep.photo = visitor.photo ep.photo = visitor.photo
ep.save() ep.save()
visitor.employee = ep visitor.employee = ep
visitor.visit = visit #更新当前所属访客项目 visitor.visit = visit # 更新当前所属访客项目
visitor.save() visitor.save()
# 同步至大华人员库并下发人脸 # 同步至大华人员库并下发人脸
Thread(target=HrmService.sync_dahua_employee, args=(ep, '', visit.visit_time, visit.leave_time)).start() Thread(target=HrmService.sync_dahua_employee, args=(ep, '', visit.visit_time, visit.leave_time)).start()