From 94ecdc1ab662476659b4258f360880c05e4ae1ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 15 Sep 2022 12:17:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4hrm=20sinnal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/hrm/signals.py | 24 ------------------------ apps/system/views.py | 31 ++++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/apps/hrm/signals.py b/apps/hrm/signals.py index 6a72306f..d5b734a4 100755 --- a/apps/hrm/signals.py +++ b/apps/hrm/signals.py @@ -2,27 +2,3 @@ from django.db.models.signals import post_save from apps.system.models import User from django.dispatch import receiver from apps.hrm.models import Employee - - -@receiver(post_save, sender=User) -def updateEmployee(sender, instance, created, **kwargs): - ep = None - ep_created = False - if created: - ep, ep_created = Employee.objects.get_or_create(user=instance, - defaults={ - "user": instance, - "name": instance.name, - "phone": instance.phone, - "belong_dept": instance.belong_dept, - "post": instance.post, - "type": instance.type - }) - if ep and not ep_created: - ep.belong_dept = instance.belong_dept - ep.post = instance.post - ep.type = instance.type - if instance.phone != ep.phone: - ep.phone = instance.phone - ep.save() - ep.save() diff --git a/apps/system/views.py b/apps/system/views.py index cd5e2ed9..2bf32350 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -16,6 +16,7 @@ from rest_framework.parsers import (JSONParser, from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView +from apps.hrm.models import Employee from apps.system.errors import OLD_PASSWORD_WRONG, PASSWORD_NOT_SAME, SCHEDULE_WRONG from apps.system.filters import DeptFilterSet, UserFilterSet # from django_q.models import Task as QTask, Schedule as QSchedule @@ -384,6 +385,13 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo user.post = up.post user.update_by = self.request.user user.save() + # 更新人员表 + ep = Employee.objects.get_queryset(all=True).filter(user=instance).first() + if ep: + ep.belong_dept = user.belong_dept + ep.post = user.post + ep.is_deleted = False + ep.save() def perform_destroy(self, instance): with transaction.atomic(): @@ -398,6 +406,13 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo user.post = None user.update_by = self.request.user user.save() + # 更新人员表 + ep = Employee.objects.get_queryset(all=True).filter(user=instance).first() + if ep: + ep.belong_dept = user.belong_dept + ep.post = user.post + ep.is_deleted = False + ep.save() class UserViewSet(CustomModelViewSet): @@ -425,7 +440,21 @@ class UserViewSet(CustomModelViewSet): password = make_password('0000') serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) - serializer.save(password=password, belong_dept=None) + instance = serializer.save(password=password, belong_dept=None) + ep = Employee.objects.get_queryset(all=True).filter(user=instance).first() + ep2 = Employee.objects.get_queryset(all=True).filter(phone=instance.phone).first() + if ep: + pass + elif ep2: + ep = ep2 + else: + ep = Employee() + ep.user = instance + ep.name = instance.name + ep.phone = instance.phone + ep.type = instance.type + ep.is_deleted = False + ep.save() return Response(data=serializer.data) @action(methods=['put'], detail=False,