diff --git a/apps/am/serializers.py b/apps/am/serializers.py index 04a0a35e..e7574063 100644 --- a/apps/am/serializers.py +++ b/apps/am/serializers.py @@ -1,7 +1,5 @@ from rest_framework import serializers from apps.am.models import Access, Area -from apps.hrm.models import Employee -from apps.system.models import Post from apps.utils.serializers import CustomModelSerializer from rest_framework.exceptions import ParseError @@ -15,6 +13,7 @@ class AreaSimpleSerializer(CustomModelSerializer): class AreaSerializer(CustomModelSerializer): manager_name = serializers.CharField(source='manager.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) + class Meta: model = Area fields = '__all__' diff --git a/apps/am/views.py b/apps/am/views.py index c7133435..8bfaedf2 100755 --- a/apps/am/views.py +++ b/apps/am/views.py @@ -7,7 +7,6 @@ from rest_framework import serializers from apps.third.clients import xxClient from apps.third.tapis import xxapis from rest_framework.response import Response -from rest_framework.exceptions import ParseError from rest_framework.mixins import ListModelMixin, CreateModelMixin, DestroyModelMixin diff --git a/apps/auth1/models.py b/apps/auth1/models.py index bf70e4a6..b0b75a3b 100755 --- a/apps/auth1/models.py +++ b/apps/auth1/models.py @@ -1,5 +1,3 @@ -from django.db import models -from apps.utils.models import BaseModel # Create your models here. diff --git a/apps/auth1/serializers.py b/apps/auth1/serializers.py index 089b2025..64f85138 100755 --- a/apps/auth1/serializers.py +++ b/apps/auth1/serializers.py @@ -27,4 +27,4 @@ class PwResetSerializer(serializers.Serializer): class SecretLoginSerializer(serializers.Serializer): username = serializers.CharField(label="用户名") - secret = serializers.CharField(label="密钥") \ No newline at end of file + secret = serializers.CharField(label="密钥") diff --git a/apps/auth1/urls.py b/apps/auth1/urls.py index cd8a1173..91eb711c 100755 --- a/apps/auth1/urls.py +++ b/apps/auth1/urls.py @@ -1,9 +1,10 @@ -from atexit import register + from django.urls import path from rest_framework_simplejwt.views import (TokenObtainPairView, TokenRefreshView) -from apps.auth1.views import CodeLogin, LoginView, LogoutView, PwResetView, SecretLogin, SendCode, TokenBlackView, WxLogin, WxmpLogin +from apps.auth1.views import (CodeLogin, LoginView, LogoutView, PwResetView, + SecretLogin, SendCode, TokenBlackView, WxLogin, WxmpLogin) API_BASE_URL = 'api/auth/' urlpatterns = [ diff --git a/apps/auth1/views.py b/apps/auth1/views.py index 118c3449..70fd3ff5 100755 --- a/apps/auth1/views.py +++ b/apps/auth1/views.py @@ -7,10 +7,6 @@ from django.contrib.auth import authenticate, login, logout from rest_framework.generics import CreateAPIView from rest_framework.permissions import IsAuthenticated from apps.auth1.errors import USERNAME_OR_PASSWORD_WRONG -from rest_framework.exceptions import ParseError -import requests -import json -from django.conf import settings from rest_framework_simplejwt.tokens import RefreshToken from django.core.cache import cache from apps.auth1.services import check_phone_code @@ -22,9 +18,9 @@ from django.contrib.auth.hashers import make_password from django.db.models import Q -from apps.auth1.serializers import CodeLoginSerializer, LoginSerializer, PwResetSerializer, SecretLoginSerializer, SendCodeSerializer, WxCodeSerializer +from apps.auth1.serializers import (CodeLoginSerializer, LoginSerializer, + PwResetSerializer, SecretLoginSerializer, SendCodeSerializer, WxCodeSerializer) from apps.system.models import User -from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet # Create your views here. diff --git a/apps/develop/tasks.py b/apps/develop/tasks.py index 4ae24db9..df13004f 100755 --- a/apps/develop/tasks.py +++ b/apps/develop/tasks.py @@ -1,12 +1,7 @@ from __future__ import absolute_import, unicode_literals from celery import shared_task import subprocess -from apps.utils.tasks import CustomTask from server.settings import DATABASES, BACKUP_PATH, SH_PATH, SD_PWD -import requests -import json -from django.conf import settings -from django.core.cache import cache @shared_task @@ -55,4 +50,3 @@ def backup_media(): command = 'bash {}/backup_media.sh'.format(SH_PATH) completed = subprocess.run(command, shell=True, capture_output=True, text=True) return completed - diff --git a/apps/develop/views.py b/apps/develop/views.py index 4d030be7..12a66f87 100755 --- a/apps/develop/views.py +++ b/apps/develop/views.py @@ -1,4 +1,4 @@ -import json + from rest_framework.views import APIView from rest_framework.permissions import IsAdminUser from rest_framework.response import Response @@ -6,13 +6,10 @@ from rest_framework.serializers import Serializer from rest_framework.decorators import action from apps.develop.serializers import GenerateVoiceSerializer, SendSmsSerializer, TestTaskSerializer from apps.develop.tasks import backup_database, backup_media, reload_web_git, reload_server_git, reload_server_only -from rest_framework.exceptions import APIException, ParseError -from apps.system.models import User +from rest_framework.exceptions import APIException from apps.system.tasks import show from apps.utils.sms import send_sms from apps.utils.speech import generate_voice -from django.core.cache import cache -import requests from apps.utils.viewsets import CustomGenericViewSet from apps.utils.wx import wxClient diff --git a/apps/ecm/serializers.py b/apps/ecm/serializers.py index 8f4f33db..93880f98 100644 --- a/apps/ecm/serializers.py +++ b/apps/ecm/serializers.py @@ -1,4 +1,4 @@ -from apps.am.serializers import AreaSerializer, AreaSimpleSerializer +from apps.am.serializers import AreaSerializer from apps.ecm.models import AlgoChannel, EventCate, Remind, NotifySetting, Event from apps.third.serializers import TDeviceSimpleSerializer from apps.third.models import TDevice diff --git a/apps/ecm/service.py b/apps/ecm/service.py index fc69fe32..1c9bc9db 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -6,9 +6,7 @@ from apps.am.tasks import cache_areas_info from apps.ecm.models import AlgoChannel, Event, EventCate, Eventdo, NotifySetting, Remind from apps.hrm.models import Employee from apps.system.models import User -from apps.third.clients import xxClient from apps.third.models import TDevice -from apps.third.tapis import xxapis from apps.utils.queryset import get_child_queryset2, get_parent_queryset from django.core.cache import cache import time @@ -33,13 +31,6 @@ def update_remind_read(event: Event, user: User): def get_area_info_from_cache(target: str, cache: list): """从区域信息缓存里匹配到所在区域 - - Args: - target (str): 区域ID - cache (list): - - Returns: - _type_: _description_ """ for i in cache: if i['id'] == target: diff --git a/apps/ecm/views.py b/apps/ecm/views.py index a96261e0..b0ab6d00 100644 --- a/apps/ecm/views.py +++ b/apps/ecm/views.py @@ -1,20 +1,28 @@ from threading import Thread + +from django.db import transaction +from django.db.models import Count, F +from django.utils import timezone +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied +from rest_framework.mixins import (CreateModelMixin, DestroyModelMixin, + ListModelMixin, RetrieveModelMixin, + UpdateModelMixin) +from rest_framework.response import Response + from apps.ecm.filters import EventFilterSet -from apps.ecm.models import AlgoChannel, Event, EventCate, Eventdo, Remind, NotifySetting -from apps.ecm.serializers import (AlgoChannelCreateSerializer, AlgoChannelCreatesSerializer, AlgoChannelSerializer, EventAggSerializer, EventCateCreateUpdateSerializer, EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer, - EventSerializer, RemindSerializer, NotifySettingsSerializer) +from apps.ecm.models import (AlgoChannel, Event, EventCate, Eventdo, + NotifySetting, Remind) +from apps.ecm.serializers import (AlgoChannelCreateSerializer, + AlgoChannelCreatesSerializer, + AlgoChannelSerializer, EventAggSerializer, + EventCateCreateUpdateSerializer, + EventCateListSerializer, + EventHandleSerializer, EventSerializer, + NotifySettingsSerializer, RemindSerializer) from apps.ecm.service import update_remind_read from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet -from rest_framework.mixins import UpdateModelMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin -from django.db import transaction -from rest_framework.decorators import action -from rest_framework import serializers -from django.utils import timezone -from rest_framework.response import Response -from rest_framework.exceptions import PermissionDenied -from apps.utils.snowflake import idWorker -from django.db.models import Count, F # Create your views here. @@ -81,7 +89,8 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet): """ obj = self.get_object() # 判断当前用户有无处理权限 - if (not Remind.objects.filter(event=obj, recipient=request.user, can_handle=True).exists()) and (not request.user.is_superuser): + if (not Remind.objects.filter(event=obj, recipient=request.user, can_handle=True).exists()) and ( + not request.user.is_superuser): raise PermissionDenied('您无权处理该事件') data = request.data obj.mark = data.get('mark') diff --git a/apps/hrm/models.py b/apps/hrm/models.py index 714a2c61..82a53600 100755 --- a/apps/hrm/models.py +++ b/apps/hrm/models.py @@ -1,7 +1,7 @@ from django.db import models from apps.system.models import Post, User -from apps.utils.models import BaseModel, CommonADModel, CommonAModel, CommonBModel +from apps.utils.models import CommonADModel, CommonAModel, CommonBModel class Employee(CommonBModel): @@ -40,7 +40,6 @@ class Employee(CommonBModel): not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200) third_info = models.JSONField('三方信息', default=dict, null=False, blank=True) # 主要是定位卡信息 post = models.ForeignKey(Post, verbose_name='所属岗位', on_delete=models.SET_NULL, null=True, blank=True) - class Meta: verbose_name = '员工补充信息' diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index af5a4b1f..553f11a2 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -6,15 +6,12 @@ from apps.utils.fields import MyFilePathField from apps.utils.serializers import CustomModelSerializer -from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE -from apps.utils.tools import rannum +from apps.utils.constants import EXCLUDE_FIELDS from apps.hrm.models import Certificate, ClockRecord, Employee, NotWorkRemark from apps.system.serializers import DeptSimpleSerializer, UserSimpleSerializer from django.db import transaction from apps.third.clients import dhClient -from apps.third.tapis import dhapis import re -from datetime import datetime from django.conf import settings diff --git a/apps/hrm/services.py b/apps/hrm/services.py index 1f6c0f6f..15f00c56 100755 --- a/apps/hrm/services.py +++ b/apps/hrm/services.py @@ -1,4 +1,3 @@ -from os import access from apps.hrm.models import Employee from apps.third.models import TDevice from apps.third.tapis import dhapis diff --git a/apps/hrm/views.py b/apps/hrm/views.py index 43b06949..cd322c1b 100755 --- a/apps/hrm/views.py +++ b/apps/hrm/views.py @@ -19,7 +19,6 @@ from apps.hrm.serializers import (CertificateCreateUpdateSerializer, Certificate EmployeeNotWorkRemarkSerializer, EmployeeSerializer, NotWorkRemarkListSerializer) -from apps.hrm.services import HrmService from apps.third.clients import dhClient from apps.third.tapis import dhapis diff --git a/apps/opm/serializers.py b/apps/opm/serializers.py index cfc9336b..7fe1383f 100644 --- a/apps/opm/serializers.py +++ b/apps/opm/serializers.py @@ -1,7 +1,7 @@ from apps.hrm.models import Certificate from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplCert, OplWorker from apps.system.models import Dictionary -from apps.system.serializers import DeptSimpleSerializer, DictSerializer, DictSimpleSerializer, UserSimpleSerializer +from apps.system.serializers import DeptSimpleSerializer, DictSimpleSerializer, UserSimpleSerializer from apps.utils.fields import MyFilePathField from apps.utils.serializers import CustomModelSerializer from apps.utils.constants import EXCLUDE_FIELDS @@ -122,8 +122,10 @@ class OplWorkerUpdateSerializer(CustomModelSerializer): oplc.save() return oplw + class OplCertSerializer(CustomModelSerializer): file = MyFilePathField() + class Meta: model = OplCert fields = ['certificate', 'name', 'type', 'number', 'issue_date', 'expiration_date', 'review_date', 'file'] diff --git a/apps/opm/services.py b/apps/opm/services.py index 88f28694..9c740e2b 100644 --- a/apps/opm/services.py +++ b/apps/opm/services.py @@ -1,5 +1,4 @@ from apps.opm.models import Operation, Opl, OplWorker -from apps.opm.serializers import OplCloseSerializer from apps.wf.models import Ticket, Transition @@ -62,3 +61,4 @@ def opl_audit_end(ticket: Ticket): op.save() # 授予相关工作人员区域进入权限 + worker_ep_ids = list(OplWorker.objects.filter(opl=opl).values_list('worker__id', flat=True)) diff --git a/apps/opm/views.py b/apps/opm/views.py index b5372778..900bba96 100644 --- a/apps/opm/views.py +++ b/apps/opm/views.py @@ -1,17 +1,20 @@ -from django.shortcuts import render + from rest_framework.response import Response from apps.opm.models import GasCheck, Operation, Opl, OplCate, OplWorker -from apps.opm.serializers import GasCheckCreateUpdateSerializer, GasCheckSerializer, OperationCreateUpdateSerializer, OperationDetailSerializer, OperationSerializer, OplCateCreateUpdateSerializer, OplCateDetailSerializer, OplCateSerializer, OplCreateUpdateSerializer, OplDetailSerializer, OplListSerializer, OplSerializer, OplWorkerCreateSerializer, OplWorkerSerializer, OplWorkerUpdateSerializer +from apps.opm.serializers import (GasCheckCreateUpdateSerializer, GasCheckSerializer, + OperationCreateUpdateSerializer, OperationDetailSerializer, + OplCateCreateUpdateSerializer, OplCateDetailSerializer, OplCateSerializer, + OplCreateUpdateSerializer, OplDetailSerializer, OplListSerializer, + OplWorkerCreateSerializer, OplWorkerSerializer, OplWorkerUpdateSerializer) from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from rest_framework.exceptions import ParseError from rest_framework.mixins import CreateModelMixin, ListModelMixin, DestroyModelMixin -from rest_framework.decorators import action -from rest_framework import serializers -from django.db import transaction -from apps.wf.models import State, Ticket +from apps.wf.models import Ticket # Create your views here. + + class OplCateViewSet(CustomModelViewSet): queryset = OplCate.objects.all() create_serializer_class = OplCateCreateUpdateSerializer @@ -28,7 +31,7 @@ class OperationViewSet(CustomModelViewSet): serializer_class = OperationDetailSerializer retrieve_serializer_class = OperationDetailSerializer select_related_fields = ['area', 'dept_bus', 'dept_ter', 'coordinator'] - filterset_fields = ['state', 'opl_operation__cate', 'area'] + filterset_fields = ['state', 'opl_operation__cate', 'area', 'create_by'] def update(self, request, *args, **kwargs): obj = self.get_object() diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index d002550e..53a0d8d2 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -1,7 +1,5 @@ -from inflection import transliterate -from numpy import True_ -from apps.hrm.models import Certificate, Employee -from apps.hrm.serializers import phone_check + +from apps.hrm.models import Employee from apps.rpm.models import Rcertificate, Remployee, Rfile, Rparty, Rpjcertificate, Rpjfile, Rpjmember, Rpj from apps.system.models import Dept from apps.utils.constants import EXCLUDE_FIELDS @@ -76,6 +74,7 @@ class RfileListSerializer(CustomModelSerializer): class RpjCreateUpdateSerializer(CustomModelSerializer): rparty = serializers.PrimaryKeyRelatedField(queryset=Rparty.objects.all(), required=False) belong_dept = serializers.PrimaryKeyRelatedField(queryset=Dept.objects.all(), required=False) + class Meta: model = Rpj fields = ['id', 'name', 'contract_number', 'type', 'come_time', 'leave_time', 'belong_dept', 'rparty'] @@ -117,6 +116,7 @@ class RpjListSerializer(CustomModelSerializer): class RemployeeCreateSerializer(CustomModelSerializer): rparty = serializers.PrimaryKeyRelatedField(queryset=Rparty.objects.all(), label='相关方ID', required=False) + class Meta: model = Remployee fields = ['name', 'phone', 'photo', 'id_number', 'rparty'] @@ -141,6 +141,7 @@ class RemployeeUpdateSerializer(CustomModelSerializer): class RemployeeSerializer(CustomModelSerializer): rparty_name = serializers.CharField(source='rparty.name', read_only=True) photo = MyFilePathField() + class Meta: model = Remployee fields = '__all__' @@ -156,6 +157,7 @@ class RcertificateSerializer(CustomModelSerializer): remployee_name = serializers.CharField(source='remployee.name', read_only=True) rparty_name = serializers.CharField(source='rparty.name', read_only=True) file = MyFilePathField() + class Meta: model = Rcertificate fields = '__all__' @@ -236,12 +238,15 @@ class RpjmemberUpdateSerializer(CustomModelSerializer): Rpjmember.objects.exclude(id=ins.id).update(is_manager=False) return ins + class RpjcertificateSerializer(CustomModelSerializer): file = MyFilePathField() + class Meta: model = Rpjcertificate fields = ['rcertificate', 'name', 'type', 'number', 'issue_date', 'expiration_date', 'review_date', 'file'] + class RpjmemberSerializer(CustomModelSerializer): remployee_ = RemployeeSerializer(source='remployee', read_only=True) rcertificates_ = serializers.SerializerMethodField() diff --git a/apps/rpm/services.py b/apps/rpm/services.py index d4cafba9..0f4f8192 100644 --- a/apps/rpm/services.py +++ b/apps/rpm/services.py @@ -1,12 +1,10 @@ -from threading import Thread -from apps.hrm.errors import PHONE_EXIST + from apps.hrm.models import Certificate, Employee from apps.hrm.services import HrmService from apps.system.models import Post, User, UserPost from apps.utils.tools import ranstr from apps.wf.models import Ticket, Transition -from apps.rpm.models import Rcertificate, Rfile, Rpj, Rpjcertificate, Rpjfile, Rpjmember -from rest_framework.exceptions import ParseError +from apps.rpm.models import Rfile, Rpj, Rpjcertificate, Rpjfile, Rpjmember from django.contrib.auth.hashers import make_password diff --git a/apps/rpm/views.py b/apps/rpm/views.py index c6acce02..4e400c86 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -1,19 +1,20 @@ -from django.shortcuts import render -from apps.hrm.models import Certificate, Employee -from apps.hrm.serializers import CertificateCreateUpdateSerializer, CertificateSerializer, EmployeeSerializer + from apps.rpm.models import Rcertificate, Remployee, Rparty, Rfile, Rpjfile, Rpjmember, Rpj -from apps.rpm.serializers import RcertificateCreateUpdateSerializer, RcertificateSerializer, RemployeeCreateSerializer, RemployeeSerializer, RemployeeUpdateSerializer, RpartyAssignSerializer, RpartyCreateUpdateSerializer, RfileListSerializer, RpartySerializer, RpjListSerializer, RpjfileSerializer, RpjfileUpdateSerializer, RpjmemberCreateSerializer, RpjmemberCreatesSerializer, RpjCreateUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer -from apps.system.models import Dictionary, Post, User, UserPost +from apps.rpm.serializers import (RcertificateCreateUpdateSerializer, + RcertificateSerializer, RemployeeCreateSerializer, RemployeeSerializer, + RemployeeUpdateSerializer, RpartyAssignSerializer, RpartyCreateUpdateSerializer, + RfileListSerializer, RpartySerializer, RpjListSerializer, RpjfileSerializer, + RpjfileUpdateSerializer, RpjmemberCreateSerializer, + RpjCreateUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer) +from apps.system.models import Dictionary, Post, UserPost from apps.system.serializers import UserCreateSerializer from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet -from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin -from apps.utils.mixins import CustomDestoryModelMixin +from rest_framework.mixins import ListModelMixin, DestroyModelMixin, UpdateModelMixin from rest_framework.decorators import action from rest_framework.response import Response -from django.contrib.auth.hashers import check_password, make_password +from django.contrib.auth.hashers import make_password from django.db import transaction from rest_framework.exceptions import ParseError -from rest_framework import serializers # Create your views here. @@ -31,7 +32,6 @@ class RpartyViewSet(CustomModelViewSet): queryset = queryset.filter(dept=self.request.user.belong_dept) return queryset - @action(methods=['post'], detail=True, perms_map={'post': 'rparty:assgin'}, serializer_class=RpartyAssignSerializer) @transaction.atomic def assign(self, request, *args, **kwargs): @@ -122,7 +122,7 @@ class RpjViewSet(CustomModelViewSet): update_serializer_class = RpjCreateUpdateSerializer serializer_class = RpjListSerializer select_related_fields = ['rparty', 'belong_dept', 'ticket', 'ticket__state'] - filterset_fields = ['rparty', 'belong_dept', 'state'] + filterset_fields = ['rparty', 'belong_dept', 'state', 'create_by'] def get_queryset(self): queryset = super().get_queryset() diff --git a/apps/system/models.py b/apps/system/models.py index d3802e2a..9bdb626c 100755 --- a/apps/system/models.py +++ b/apps/system/models.py @@ -1,8 +1,7 @@ from django.contrib.auth.models import UserManager -import enum from django.db import models from django.contrib.auth.models import AbstractUser -from apps.utils.models import CommonAModel, CommonBModel, BaseModel, SoftDeletableManager, SoftDeletableManagerMixin +from apps.utils.models import CommonAModel, CommonBModel, BaseModel, SoftDeletableManagerMixin class DataFilter(models.IntegerChoices): diff --git a/apps/system/serializers.py b/apps/system/serializers.py index 4189c5b8..5bfd6518 100755 --- a/apps/system/serializers.py +++ b/apps/system/serializers.py @@ -301,6 +301,7 @@ class UserListSerializer(CustomModelSerializer): belong_dept_ = DeptSimpleSerializer(source='belong_dept', read_only=True) # posts_ = PostSimpleSerializer(source='posts', many=True) avatar = MyFilePathField() + class Meta: model = User exclude = ['password', 'secret'] diff --git a/apps/system/views.py b/apps/system/views.py index 5e212edf..14453a91 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -14,7 +14,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.system.errors import FUNC_ERROR, OLD_PASSWORD_WRONG, PASSWORD_NOT_SAME, SCHEDULE_WRONG +from apps.system.errors import 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) @@ -27,7 +27,8 @@ from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRol from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer, DictSerializer, DictTypeCreateUpdateSerializer, DictTypeSerializer, FileSerializer, PasswordChangeSerializer, PermissionCreateUpdateSerializer, - PermissionSerializer, PostCreateUpdateSerializer, PostRoleCreateSerializer, PostRoleSerializer, PostSerializer, + PermissionSerializer, PostCreateUpdateSerializer, PostRoleCreateSerializer, + PostRoleSerializer, PostSerializer, PTaskSerializer, PTaskCreateUpdateSerializer, PTaskResultSerializer, RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer, UserCreateSerializer, UserListSerializer, UserPostCreateSerializer, @@ -512,7 +513,7 @@ class UserViewSet(CustomModelViewSet): user.wx_openid = openid user.save() return Response({'wx_openid': openid}) - + @action(methods=['post'], detail=False, permission_classes=[IsAuthenticated]) def bind_secret(self, request, pk=None): """创建密钥 diff --git a/apps/third/serializers.py b/apps/third/serializers.py index ef400238..796fea48 100755 --- a/apps/third/serializers.py +++ b/apps/third/serializers.py @@ -4,7 +4,6 @@ from apps.am.models import Area from apps.hrm.serializers import EmployeeSimpleSerializer from apps.third.models import BltBind, TDevice, Tlog from apps.utils.serializers import CustomModelSerializer -from django.db import transaction class PicSerializer(serializers.Serializer): diff --git a/apps/utils/permission.py b/apps/utils/permission.py index 0ce35149..983cffdc 100755 --- a/apps/utils/permission.py +++ b/apps/utils/permission.py @@ -1,7 +1,7 @@ from django.core.cache import cache from rest_framework.permissions import BasePermission from apps.utils.queryset import get_child_queryset2 -from apps.system.models import DataFilter, Dept, Permission, Post, PostRole, UserPost +from apps.system.models import DataFilter, Dept, Permission, PostRole, UserPost from django.db.models.query import QuerySet ALL_PERMS = [ diff --git a/apps/utils/wx.py b/apps/utils/wx.py index 2c5182d9..09fe2e40 100644 --- a/apps/utils/wx.py +++ b/apps/utils/wx.py @@ -1,9 +1,7 @@ from django.core.cache import cache -import json import time from threading import Thread import uuid -from async_timeout import timeout import requests from django.conf import settings diff --git a/apps/vm/serializers.py b/apps/vm/serializers.py index 30b89ab7..ab6f5e2c 100644 --- a/apps/vm/serializers.py +++ b/apps/vm/serializers.py @@ -1,6 +1,4 @@ -from requests import request -from apps.hrm.models import Employee -from apps.utils.constants import EXCLUDE_FIELDS + from apps.utils.fields import MyFilePathField from apps.utils.serializers import CustomModelSerializer from apps.vm.models import Visit, Visitor, Vpeople diff --git a/apps/vm/services.py b/apps/vm/services.py index 27a94a92..86545f73 100644 --- a/apps/vm/services.py +++ b/apps/vm/services.py @@ -1,8 +1,7 @@ -from threading import Thread + from apps.hrm.models import Employee from apps.hrm.services import HrmService from apps.vm.models import Visit, Vpeople -from apps.wf.models import Ticket def bind_visit(ticket, transition, new_ticket_data: dict): diff --git a/apps/vm/views.py b/apps/vm/views.py index bbca23eb..e30f0959 100644 --- a/apps/vm/views.py +++ b/apps/vm/views.py @@ -1,19 +1,18 @@ -from django.shortcuts import render + from apps.auth1.services import check_phone_code from apps.auth1.views import get_tokens_for_user -from apps.hrm.models import Employee from apps.system.models import User from apps.utils.tools import ranstr -from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet, GenericViewSet +from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.vm.models import Visit, Visitor, Vpeople -from apps.vm.serializers import VisitCreateUpdateSerializer, VisitDetailSerializer, VisitSerializer, VisitorCreateSerializer, VisitorRegisterSerializer, VisitorSerializer, VpeopleCreateSerializer, VpeopleSerializer +from apps.vm.serializers import (VisitCreateUpdateSerializer, VisitDetailSerializer, + VisitSerializer, VisitorCreateSerializer, VisitorRegisterSerializer, VisitorSerializer, + VpeopleCreateSerializer, VpeopleSerializer) from rest_framework.decorators import action from rest_framework.response import Response from rest_framework.exceptions import ParseError -from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin, UpdateModelMixin -from apps.utils.mixins import CustomDestoryModelMixin +from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin from django.contrib.auth.hashers import make_password -from rest_framework.permissions import IsAuthenticated from django.db import transaction # Create your views here. @@ -24,7 +23,7 @@ class VisitViewSet(CustomModelViewSet): update_serializer_class = VisitCreateUpdateSerializer serializer_class = VisitSerializer retrieve_serializer_class = VisitDetailSerializer - filterset_fields = ['state'] + filterset_fields = ['state', 'create_by'] select_related_fields = ['ticket', 'receptionist', 'ticket__workflow', 'ticket__state'] def get_queryset(self): @@ -36,7 +35,7 @@ class VisitViewSet(CustomModelViewSet): def create(self, request, *args, **kwargs): user = self.request.user - if user.type == 'visitor' and not user.employee: + if user.type == 'visitor' and user.employee.photo is None: raise ParseError('请先完善个人信息') return super().create(request, *args, **kwargs)