用户名已存在的bug
This commit is contained in:
parent
2c2172e990
commit
dfd6ccef18
|
@ -1,3 +1,6 @@
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
NO_NEED_LEVEL_REMARK = {"code":"no_need_level_remark", "detail":"无需填写离岗说明"}
|
NO_NEED_LEVEL_REMARK = {"code":"no_need_level_remark", "detail":"无需填写离岗说明"}
|
||||||
PHONE_F_WRONG = {"code":"phone_f_wrong", "detail":"手机号格式错误"}
|
PHONE_F_WRONG = {"code":"phone_f_wrong", "detail":"手机号格式错误"}
|
||||||
PHONE_EXIST = {"code":"phone_exist", "detail":"手机号已存在"}
|
PHONE_EXIST = {"code":"phone_exist", "detail":"手机号已存在"}
|
||||||
|
|
|
@ -36,7 +36,7 @@ class Employee(CommonBModel):
|
||||||
show_atwork = models.BooleanField('是否展示在岗状态', default=True)
|
show_atwork = models.BooleanField('是否展示在岗状态', default=True)
|
||||||
last_check_time = models.DateTimeField('打卡时间', null=True, blank=True)
|
last_check_time = models.DateTimeField('打卡时间', null=True, blank=True)
|
||||||
not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200)
|
not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200)
|
||||||
third_info = models.JSONField('三方信息', default=dict, null=True, blank=True)
|
third_info = models.JSONField('三方信息', default=dict, null=False, blank=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '员工补充信息'
|
verbose_name = '员工补充信息'
|
||||||
verbose_name_plural = verbose_name
|
verbose_name_plural = verbose_name
|
||||||
|
|
|
@ -161,7 +161,7 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
||||||
if not third_info.get('dh_face_card', None):
|
if not third_info.get('dh_face_card', None):
|
||||||
_, res = dhClient.request(**dhapis['gen_card_id'])
|
_, res = dhClient.request(**dhapis['gen_card_id'])
|
||||||
cardId = res['id']
|
cardId = res['id']
|
||||||
cardNumber = instance.id[:8] + rannum(2)
|
cardNumber = instance.id[3:8] + rannum(5)
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
startDate = now.strftime("%Y-%m-%d %H:%M:%S")
|
startDate = now.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
endDate = (datetime(year=now.year+50,
|
endDate = (datetime(year=now.year+50,
|
||||||
|
|
|
@ -83,7 +83,7 @@ class EmployeeViewSet(CustomModelViewSet):
|
||||||
serializer = self.get_serializer(data=request.data)
|
serializer = self.get_serializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
vdata = serializer.validated_data
|
vdata = serializer.validated_data
|
||||||
objs = Employee.objects.filter(pk__in=vdata['pks'])
|
objs = Employee.objects.filter(pk__in=vdata['pks'], third_info__dh_face_card__isnull=False)
|
||||||
infos = objs.values('third_info')
|
infos = objs.values('third_info')
|
||||||
cards = []
|
cards = []
|
||||||
for i in infos:
|
for i in infos:
|
||||||
|
@ -95,13 +95,16 @@ class EmployeeViewSet(CustomModelViewSet):
|
||||||
"privilegeType": 1,
|
"privilegeType": 1,
|
||||||
"resouceCode": i
|
"resouceCode": i
|
||||||
})
|
})
|
||||||
|
if cards and details:
|
||||||
json_data = {
|
json_data = {
|
||||||
"cardNumbers": cards,
|
"cardNumbers": cards,
|
||||||
"timeQuantumId": 1,
|
"timeQuantumId": 1,
|
||||||
"cardPrivilegeDetails": details
|
"cardPrivilegeDetails": details
|
||||||
}
|
}
|
||||||
dhClient.request(**dhapis['card_door_authority'], json=json_data)
|
dhClient.request(**dhapis['card_door_authority'], json=json_data)
|
||||||
objs.update(third_info__dh_channels = vdata['channels'])
|
for i in objs:
|
||||||
|
i.third_info['dh_channels'] = vdata['channels']
|
||||||
|
Employee.objects.bulk_update(objs, fields = ['third_info'])
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
|
class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
|
@ -0,0 +1,5 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class MqConfig(AppConfig):
|
||||||
|
name = 'mq'
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.shortcuts import render
|
||||||
|
|
||||||
|
# Create your views here.
|
|
@ -269,11 +269,16 @@ class UserUpdateSerializer(CustomModelSerializer):
|
||||||
"""
|
"""
|
||||||
用户编辑序列化
|
用户编辑序列化
|
||||||
"""
|
"""
|
||||||
username = serializers.CharField(required=True, validators=[user_exist])
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = ['username', 'name', 'avatar', 'is_active']
|
fields = ['username', 'name', 'avatar', 'is_active']
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
if User.objects.filter(username=validated_data['username']
|
||||||
|
).exclude(id=instance.id).exists():
|
||||||
|
raise ParseError(**USERNAME_EXIST)
|
||||||
|
return super().update(instance, validated_data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,14 @@ dhapis = {
|
||||||
"url":"/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/doorAuthority",
|
"url":"/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/doorAuthority",
|
||||||
"method":"post"
|
"method":"post"
|
||||||
},
|
},
|
||||||
|
"mq_subscribe": {
|
||||||
|
"url":"/evo-apigw/evo-event/1.0.0/subscribe/mqinfo",
|
||||||
|
"method":"post"
|
||||||
|
},
|
||||||
|
"mq_unsubscribe": {
|
||||||
|
"url":"/evo-apigw/evo-event/1.0.0/subscribe/mqinfo",
|
||||||
|
"method":"delete"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# 寻息API接口
|
# 寻息API接口
|
||||||
|
|
|
@ -7,12 +7,13 @@ from apps.utils.mixins import MyLoggingMixin
|
||||||
from apps.utils.xunxi import xxClient
|
from apps.utils.xunxi import xxClient
|
||||||
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 rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated, IsAdminUser
|
||||||
from apps.utils.viewsets import CustomGenericViewSet
|
from apps.utils.viewsets import CustomGenericViewSet
|
||||||
from rest_framework.mixins import CreateModelMixin
|
from rest_framework.mixins import CreateModelMixin
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
|
|
||||||
from apps.third.serializers import RequestCommonSerializer
|
from apps.third.serializers import RequestCommonSerializer
|
||||||
|
from rest_framework import serializers
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,6 +82,7 @@ class XxCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
return Response(xxapis)
|
return Response(xxapis)
|
||||||
|
|
||||||
|
|
||||||
class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
大华通用调用接口
|
大华通用调用接口
|
||||||
|
@ -113,3 +115,49 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
||||||
获取请求短标识
|
获取请求短标识
|
||||||
"""
|
"""
|
||||||
return Response(dhapis)
|
return Response(dhapis)
|
||||||
|
|
||||||
|
@action(methods=['post'], detail=False, permission_classes=[IsAdminUser],
|
||||||
|
serializer_class=serializers.Serializer)
|
||||||
|
def subscribe(self, request, pk=None):
|
||||||
|
"""事件订阅
|
||||||
|
|
||||||
|
事件订阅
|
||||||
|
"""
|
||||||
|
json_data = {
|
||||||
|
"param": {
|
||||||
|
"monitors": [
|
||||||
|
{
|
||||||
|
"monitor": "http://127.0.0.1:8000/test",
|
||||||
|
"monitorType": "url",
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"category": "business",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "alarm",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category": "state",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"subsystem": {
|
||||||
|
"subsystemType": 0,
|
||||||
|
"name": "127.0.0.1_8000",
|
||||||
|
"magic": "127.0.0.1_8000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dhClient.request(**dhapis['mq_subscribe'], json=json_data)
|
||||||
|
return Response()
|
||||||
|
|
||||||
|
@action(methods=['delete'], detail=False, permission_classes=[IsAdminUser],
|
||||||
|
serializer_class=serializers.Serializer)
|
||||||
|
def unsubscribe(self, request, pk=None):
|
||||||
|
"""取消事件订阅
|
||||||
|
|
||||||
|
取消事件订阅
|
||||||
|
"""
|
||||||
|
dhClient.request(**dhapis['mq_unsubscribe'], params={'name':'127.0.0.1_8000'})
|
||||||
|
return Response()
|
||||||
|
|
|
@ -66,7 +66,7 @@ class DhClient:
|
||||||
self.isRuning = False
|
self.isRuning = False
|
||||||
# self.t.join()
|
# self.t.join()
|
||||||
|
|
||||||
def request(self, url:str, method:str, params=dict(), json=dict(), timeout=4, file_path_rela=None, raise_exception=True):
|
def request(self, url:str, method:str, params=dict(), json=dict(), timeout=10, file_path_rela=None, raise_exception=True):
|
||||||
if self.isGetingToken:
|
if self.isGetingToken:
|
||||||
req_num = 0
|
req_num = 0
|
||||||
while True:
|
while True:
|
||||||
|
@ -106,7 +106,7 @@ class DhClient:
|
||||||
if raise_exception:
|
if raise_exception:
|
||||||
raise ParseError(**err_detail)
|
raise ParseError(**err_detail)
|
||||||
return 'fail', dict(detail=detail, code='dh_'+str(ret['code']))
|
return 'fail', dict(detail=detail, code='dh_'+str(ret['code']))
|
||||||
return 'success', ret['data']
|
return 'success', ret['data'] if 'data' in ret else None
|
||||||
if raise_exception:
|
if raise_exception:
|
||||||
raise APIException(**DH_REQUEST_ERROR)
|
raise APIException(**DH_REQUEST_ERROR)
|
||||||
return 'error', DH_REQUEST_ERROR
|
return 'error', DH_REQUEST_ERROR
|
||||||
|
|
Loading…
Reference in New Issue