格式化已有代码

This commit is contained in:
曹前明 2022-08-06 15:43:25 +08:00
parent b77ecb46e7
commit b21441ad76
30 changed files with 87 additions and 107 deletions

View File

@ -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__'

View File

@ -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

View File

@ -1,5 +1,3 @@
from django.db import models
from apps.utils.models import BaseModel
# Create your models here.

View File

@ -27,4 +27,4 @@ class PwResetSerializer(serializers.Serializer):
class SecretLoginSerializer(serializers.Serializer):
username = serializers.CharField(label="用户名")
secret = serializers.CharField(label="密钥")
secret = serializers.CharField(label="密钥")

View File

@ -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 = [

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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')

View File

@ -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 = '员工补充信息'

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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']

View File

@ -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))

View File

@ -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()

View File

@ -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()

View File

@ -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

View File

@ -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()

View File

@ -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):

View File

@ -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']

View File

@ -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):
"""创建密钥

View File

@ -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):

View File

@ -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 = [

View File

@ -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

View File

@ -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

View File

@ -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):

View File

@ -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)