def delete(self, request, *args, **kwargs): serializer = FaceGroupIDSerialzier(data=request.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('face_group_id'): if serializer.errors['face_group_id'][0].code == 'required': retdata.error_msg = '人脸库ID是必须的' else: retdata.error_msg = '人脸库ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) face_group = FaceGroup.objects.filter( user=request.user, face_group_id=serializer.validated_data['face_group_id']).first() if not face_group: retdata = BaseResponse(code=0, msg='error', error_msg='不存在该人脸库') return Response(retdata.result) if face_group.bound: retdata = BaseResponse(code=0, msg='error', error_msg='人脸库已绑定摄像头,请先解除绑定后删除') return Response(retdata.result) face_group.delete() retdata = BaseResponse(code=1, msg='success', success_msg='删除人脸库成功') return Response(retdata.result)
def delete(self, request, *args, **kwargs): serializer = FaceIDSerializer(data=request.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('face_id'): if serializer.errors['face_id'][0].code == 'required': retdata.error_msg = '人脸ID是必须的' else: retdata.error_msg = '人脸ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) face = Face.objects.filter( user=request.user, face_id=serializer.validated_data['face_id']).first() if not face: retdata = BaseResponse(code=0, msg='error', error_msg='不存在人脸') return Response(retdata.result) if face.group.bound: retdata = BaseResponse(code=0, msg='error', error_msg='人脸所属组绑定了技能,不能删除') return Response(retdata.result) face.face_image.delete() face.delete() retdata = BaseResponse(code=1, msg='success', success_msg='人脸信息删除成功') return Response(retdata.result)
def get(self, requests, *args, **kwargs): serializer = CameraPreviewSerializer(data=requests.query_params) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('camera_id'): if serializer.errors['camera_id'][0].code == 'required': retdata.error_msg = '摄像图ID是必须的' else: retdata.error_msg = '摄像头ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) camera = Camera.objects.filter( user=requests.user, camera_id=serializer.validated_data['camera_id']).first() if not camera: retdata = BaseResponse(code=0, msg='error', error_msg='不存在该摄像头') return Response(retdata.result) preview = get_preview(camera.camera_url) if not preview: if not is_opened(camera.camera_url): camera.state = 10 camera.save() retdata = BaseResponse(code=0, msg='error', error_msg='摄像头连接或抽帧发生错误', data=RetrieveCameraSerializer(camera).data) return Response(retdata.result) retdata = BaseResponse(code=1, msg='success', success_msg='摄像头预览图片请求成功', data=preview) return Response(retdata.result)
def get(self, request, *args, **kwargs): serializer = InterfaceGroupIDSerializer(data=request.query_params) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('ai_skill_group_id'): if serializer.errors['ai_skill_group_id'][ 0].code == 'required': retdata.error_msg = '技能接口分组ID是必须的' else: retdata.error_msg = '技能接口分组ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) has_ai_skill_gourp = AISkillGroup.objects.filter( user=request.user, ai_skill_group_id=serializer.validated_data['ai_skill_group_id'] ).first() retdata = BaseResponse(code=1, msg='success') if not has_ai_skill_gourp: retdata.success_msg = '技能接口分组不存在,可创建' retdata.data = 0 else: retdata.success_msg = '技能接口分组已存在' retdata.data = 1 return Response(retdata.result)
def delete(self, request, *args, **kwargs): serializer = InterfaceIDSerializer(data=request.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('ai_skill_id'): if serializer.errors['ai_skill_id'][0].code == 'required': retdata.error_msg = '技能接口ID是必须的' else: retdata.error_msg = '技能接口ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) ai_skill = AISkill.objects.filter( user=request.user, ai_skill_id=serializer.validated_data['ai_skill_id']).first() if not ai_skill: retdata = BaseResponse(code=0, msg='error', error_msg='AI技能接口不存在') return Response(retdata.result) if ai_skill.bound: retdata = BaseResponse(code=0, msg='error', error_msg='技能被摄像头绑定,请解绑后删除') return Response(retdata.result) ai_skill.delete() retdata = BaseResponse(code=1, msg='success', success_msg='AI技能接口删除成功') return Response(retdata.result)
def delete(self, request, *args, **kwargs): serializer = InterfaceGroupIDSerializer(data=request.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('ai_skill_group_id'): if serializer.errors['ai_skill_group_id'][ 0].code == 'required': retdata.error_msg = '技能分组ID是必须的' else: retdata.error_msg = '技能分组ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) ai_skill_group = AISkillGroup.objects.filter( user=request.user, ai_skill_group_id=serializer.validated_data['ai_skill_group_id'] ).first() if not ai_skill_group: retdata = BaseResponse(code=0, msg='error', error_msg='不存在的接口库') return Response(retdata.result) ai_skills = ai_skill_group.aiskill_set.all() if ai_skills: for ai_skill in ai_skills: if ai_skill.bound: retdata = BaseResponse(code=0, msg='error', error_msg='该技能接口库中存在绑定摄像头的接口,无法删除') return Response(retdata.result) ai_skill_group.delete() retdata = BaseResponse(code=1, msg='success', success_msg='接口库删除成功') return Response(retdata.result)
def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) if serializer.is_valid(): retdata = BaseResponse( code=1, msg='success', data=serializer.validated_data, success_msg='登录成功' ) return Response(retdata.result) retdata = BaseResponse( code=0, msg='error' ) non_field_errors = serializer.errors.get('non_field_errors') if non_field_errors: retdata.error_msg = non_field_errors[0] return Response(retdata.result) elif serializer.errors.get('username'): retdata.error_msg = '用户名不合法,为6到16位字母、数字或下划线' elif serializer.errors.get('email'): retdata.error_msg = '邮箱格式错误或不支持的邮箱' elif serializer.errors.get('password'): if serializer.errors['password'][0].code == 'required': retdata.error_msg = '账号或密码是必传的' else: retdata.error_msg = '密码不合法,为6到16位字母、数字或合法符号' return Response(retdata.result)
def get(self, request, *args, **kwargs): serializer = RetrieveCameraCheckSerializer(data=request.query_params) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('camera_group_id'): if serializer.errors['camera_group_id'][0].code == 'required': retdata.error_msg = '摄像头分组ID是必须的' else: retdata.error_msg = '摄像头分组ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) has_camera_group = CameraGroup.objects.filter( camera_group_id=serializer.validated_data['camera_group_id'] ).first() if not has_camera_group: retdata = BaseResponse(code=0, msg='error', error_msg='没有该摄像头分组') return Response(retdata.result) cameras = Camera.objects.filter(group__camera_group_id=serializer. validated_data['camera_group_id']) cameras_serializer = RetrieveCameraSerializer(instance=cameras, many=True) retdata = BaseResponse(code=1, msg='success', success_msg='数据请求成功', data=cameras_serializer.data) return Response(retdata.result)
def get(self, request, *args, **kwargs): serializer = HasCameraGroupSerializer(data=request.query_params) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('camera_group_id'): if serializer.errors['camera_group_id'][0].code == 'required': retdata.error_msg = '摄像头分组ID是必须的' else: retdata.error_msg = '摄像头分组ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) camera_group_id = serializer.validated_data.get('camera_group_id') has_camera_group = CameraGroup.objects.filter( user=request.user, camera_group_id=camera_group_id).first() if has_camera_group: retdata = BaseResponse(code=1, msg='success', data=1, success_msg='组ID已存在') return Response(retdata.result) retdata = BaseResponse(code=1, msg='success', data=0, success_msg='组ID不存在,可新建') return Response(retdata.result)
def get(self, request, *args, **kwargs): serializer = FaceGroupIDSerialzier(data=request.query_params) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('face_group_id'): if serializer.errors['face_group_id'][0].code == 'required': retdata.error_msg = '人脸库ID是必须的' else: retdata.error_msg = '人脸库ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) has_face_group = FaceGroup.objects.filter( user=request.user, face_group_id=serializer.validated_data['face_group_id']).first() if has_face_group: retdata = BaseResponse(code=1, msg='success', data=1, success_msg='人脸库已存在') return Response(retdata.result) else: retdata = BaseResponse(code=1, msg='success', data=0, success_msg='人脸库不存在,可创建') return Response(retdata.result)
def get(self, request, *args, **kwargs): serializer = InterfaceGroupIDSerializer(data=request.query_params) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('ai_skill_group_id'): if serializer.errors['ai_skill_group_id'][ 0].code == 'required': retdata.error_msg = '技能接口分组是必须的' else: retdata.error_msg = '技能接口分组ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) ai_skill_group = AISkillGroup.objects.filter( user=request.user, ai_skill_group_id=serializer.validated_data['ai_skill_group_id'] ).first() if not ai_skill_group: retdata = BaseResponse(code=0, msg='error', error_msg='不存在的接口库') return Response(retdata.result) ai_skills = ai_skill_group.aiskill_set.all() ai_skills_serializer = InterfaceSerializer(ai_skills, many=True) retdata = BaseResponse(code=1, msg='success', success_msg='AI技能接口请求成功', data=ai_skills_serializer.data) return Response(retdata.result)
def get(self, request, *args, **kwargs): retdata = BaseResponse( code=1, msg='success', success_msg='Token未过期' ) return Response(retdata.result)
def patch(self, request, *args, **kargs): serializer = InterfaceIDSerializer(data=request.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('ai_skill_id'): if serializer.errors['ai_skill_id'][0].code == 'required': retdata.error_msg = '技能接口ID是必须的' else: retdata.error_msg = '技能接口ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) ai_skill = AISkill.objects.filter( user=request.user, ai_skill_id=serializer.validated_data.get('ai_skill_id')).first() try: ai_skill_test = requests.get(ai_skill.ai_skill_url, timeout=10).status_code if ai_skill_test != 200: ai_skill.state = 0 ai_skill.save() retdata = BaseResponse(code=1, msg='success', success_msg='接口异常', data=0) return Response(retdata.result) else: ai_skill.state = 1 ai_skill.save() retdata = BaseResponse(code=1, msg='success', success_msg='接口正常', data=1) return Response(retdata.result) except (requests.exceptions.ConnectionError, requests.exceptions.ConnectTimeout): ai_skill.state = 0 ai_skill.save() retdata = BaseResponse(code=1, msg='success', success_msg='接口异常', data=0) return Response(retdata.result)
def get(self, request, *args, **kwargs): ai_skill_groups = AISkillGroup.objects.filter(user=request.user) serializer = InterfaceGroupSerializer(ai_skill_groups, many=True) retdata = BaseResponse(code=1, msg='success', success_msg='接口库数据请求成功', data=serializer.data) return Response(retdata.result)
def get(self, request, *args, **kwargs): face_groups = FaceGroup.objects.filter(user=request.user) serializer = FaceGroupSerializer(face_groups, many=True) retdata = BaseResponse(code=1, msg='success', success_msg='人脸库数据请求成功', data=serializer.data) return Response(retdata.result)
def get(self, request, *args, **kwargs): camer_groups = CameraGroup.objects.filter(user=request.user) data = RetrieveCameraGroupSerializer(camer_groups, many=True) retdata = BaseResponse(code=1, msg='success', success_msg='摄像头组数据请求成功', data=data.data) return Response(retdata.result)
def post(self, request, *args, **kwargs): serializer = StopSerializer(data=request.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('camera_id'): if serializer.errors['camera_id'][0].code == 'required': retdata.error_msg = '摄像头ID是必须的' else: retdata.error_msg = '摄像头ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) camera_obj = Camera.objects.filter( user=request.user, camera_id=serializer.validated_data['camera_id']).first() if not camera_obj: retdata = BaseResponse(code=0, msg='error', error_msg='不存在该摄像头') return Response(retdata.result) task_id = request.user.username + '##' + serializer.validated_data[ 'camera_id'] periodic_task = PeriodicTask.objects.filter(name=task_id).first() if not periodic_task: retdata = BaseResponse(code=0, msg='error', error_msg='摄像头没有运行任务') return Response(retdata.result) periodic_task.enabled = False periodic_task.save() periodic_task.delete() with RedisTaskState(task_id=task_id) as task_state: task_state.set_state('stopped') camera_obj.state = 22 camera_obj.save() retdata = BaseResponse(code=1, msg='success', data=RetrieveCameraSerializer(camera_obj).data, success_msg='任务已结束') return Response(retdata.result)
def get(self, request, *args, **kwargs): serializer = FaceIDSerializer(data=request.query_params) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('face_id'): if serializer.errors['face_id'][0].code == 'required': retdata.error_msg = '人脸ID是必须的' else: retdata.error_msg = '人脸ID不合法,为6-20位字母、数字或下划线' return Response(retdata.result) has_face = Face.objects.filter( user=request.user, face_id=serializer.validated_data['face_id']) retdata = BaseResponse(code=1, msg='successs') if not has_face: retdata.success_msg = '人脸不存在,可创建' retdata.data = 0 else: retdata.success_msg = '人脸已存在' retdata.data = 1 return Response(retdata.result)
def delete(self, requests, *args, **kwargs): serializer = IncidentIDSerializer(data=requests.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('incident_id'): if serializer.errors['incident_id'][0].code == 'required': retdata.error_msg = '事件ID是必须的' else: retdata.error_msg = '事件ID不合法,为UUID格式' return Response(retdata.result) incident = Incident.objects.filter( user=requests.user, incident_id=serializer.validated_data['incident_id']).first() if not incident: retdata = BaseResponse(code=0, msg='error', error_msg='事件不存在') return Response(retdata.result) incident.delete() retdata = BaseResponse(code=1, msg='success', success_msg='事件删除成功') return Response(retdata.result)
def get(self, request, *args, **kwargs): email_serializer = SendEmailCaptchaSerializer(data=request.query_params) if not email_serializer.is_valid(): retdata = BaseResponse( code=0, msg='error' ) if email_serializer.errors.get('email'): if email_serializer.errors['email'][0].code == 'required': retdata.error_msg = '邮箱是必传的' else: retdata.error_msg = '邮箱格式错误或不支持的邮箱' elif email_serializer.errors.get('flag'): if email_serializer.errors['flag'][0].code == 'required': retdata.error_msg = '验证码类型是必传的' return Response(retdata.result) email = email_serializer.validated_data['email'] flag = email_serializer.validated_data['flag'] if flag == 'register': context = { 'text': '注册', 'flag': flag } elif flag == 'update': context = { 'text': '修改邮件', 'flag': flag } else: context = { 'text': '找回密码', 'flag': flag } send_email_captcha.delay(email, context) retdata = BaseResponse( code=1, msg='success', success_msg='验证码发送成功' ) return Response(retdata.result)
def patch(self, request, *args, **kwargs): faces = Face.objects.filter(user=request.user) serializer = UpdateFaceSerializer(instance=faces, data=request.data, partial=True) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('face_id'): retdata.error_msg = '人脸库ID,为6-20位字母、数字或下划线' elif serializer.errors.get('name'): retdata.error_msg = '人脸名称不能超过30个字符或为空' elif serializer.errors.get('face_image'): retdata.error_msg = '请上传一个有效的图片文件' return Response(retdata.result) face_id = serializer.validated_data.get('face_id') name = serializer.validated_data.get('name') face_image = serializer.validated_data.get('face_image') if not name and not face_image: retdata = BaseResponse(code=0, msg='error', error_msg='请传入须修改数据') return Response(retdata.result) if not face_id: retdata = BaseResponse(code=0, msg='error', error_msg='人脸ID是必须的') return Response(retdata.result) face = faces.filter(face_id=face_id).first() if not face: retdata = BaseResponse(code=0, msg='error', error_msg='不存在该人脸') return Response(retdata.result) if face.group.bound: retdata = BaseResponse(code=0, msg='error', error_msg='所属人脸库已绑定摄像头,请先解除绑定后修改人脸信息') return Response(retdata.result) face_image = request.data.get('face_image') if face_image: face_detector = FaceDetection(image=face_image) if not face_detector.detect(): retdata = BaseResponse(code=0, msg='error', error_msg='图片中没有人脸或非标准人脸照片') return Response(retdata.result) new_face_obj = serializer.save() retdata = BaseResponse(code=1, msg='success', data=FaceSerializer(new_face_obj).data, success_msg='人脸信息更改成功') return Response(retdata.result)
def post(self, request, *args, **kwargs): serializer = FaceGroupSerializer(data=request.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('face_group_id'): if serializer.errors['face_group_id'][0].code == 'required': retdata.error_msg = '人脸库ID是必须的' else: retdata.error_msg = '人脸库ID不合法,为6-20位字母、数字或下划线' elif serializer.errors.get('name'): if serializer.errors['name'][0].code == 'required': retdata.error_msg = '人脸库名称是必须的' else: retdata.error_msg = '人脸库名称不得超过30个字符或为空' elif serializer.errors.get('description'): retdata.error_msg = '人脸库描述不得超过300个字符' return Response(retdata.result) has_face_group = FaceGroup.objects.filter( user=request.user, face_group_id=serializer.validated_data['face_group_id']).first() if has_face_group: retdata = BaseResponse(code=0, msg='error', error_msg='人脸库已存在') return Response(retdata.result) face_group_obj = serializer.save(user=request.user) retdata = BaseResponse(code=1, msg='success', data=FaceGroupSerializer(face_group_obj).data, success_msg='创建人脸库成功') return Response(retdata.result)
def post(self, request, *args, **kwargs): serializer = FaceSerializer(data=request.data) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('face_id'): if serializer.errors['face_id'][0].code == 'required': retdata.error_msg = '人脸ID是必须的' else: retdata.error_msg = '人脸ID不合法,为6-20位字母、数字或下划线' elif serializer.errors.get('face_group_id'): if serializer.errors['face_group_id'][0].code == 'required': retdata.error_msg = '人脸库ID是必须的' else: retdata.error_msg = '人脸库ID不合法,为6-20位字母、数字或下划线' elif serializer.errors.get('name'): if serializer.errors['name'][0].code == 'required': retdata.error_msg = '人脸名称是必须的' else: retdata.error_msg = '人脸名称不得超过30个字符或为空' elif serializer.errors.get('face_image'): if serializer.errors['face_image'][0].code == 'required': retdata.error_msg = '人脸图片base64编码是必须的' else: retdata.error_msg = '请上传一个有效的图片文件' return Response(retdata.result) has_face = Face.objects.filter( user=request.user, face_id=serializer.validated_data['face_id']).first() if has_face: retdata = BaseResponse(code=0, msg='error', error_msg='人脸已存在') return Response(retdata.result) has_face_group_id = FaceGroup.objects.filter( user=request.user, face_group_id=serializer.validated_data['face_group_id']).first() if not has_face_group_id: retdata = BaseResponse(code=0, msg='error', error_msg='人脸库不存在,无法绑定人脸') return Response(retdata.result) face_img_b64 = request.data.get('face_image') face_detector = FaceDetection(image=face_img_b64) if not face_detector.detect(): retdata = BaseResponse(code=0, msg='error', error_msg='图片中没有人脸或非标准人脸照片') return Response(retdata.result) face_obj = serializer.save(user=request.user) redata = BaseResponse(code=1, msg='success', data=FaceSerializer(face_obj).data, success_msg='人脸添加成功') return Response(redata.result)
def post(self, request, *args, **kwargs): user_serializer = RegisterUserSerializer(data=request.data) if not user_serializer.is_valid(): retdata = BaseResponse( code=0, msg='error' ) if user_serializer.errors.get('captcha'): if user_serializer.errors['captcha'][0].code == 'required': retdata.error_msg = '验证码是必传的' else: retdata.error_msg = '验证码格式错误,为5位数字' elif user_serializer.errors.get('username'): if user_serializer.errors['username'][0].code == 'required': retdata.error_msg = '用户名是必传的' else: retdata.error_msg = '用户名不合法,为6到16位字母、数字或下划线' elif user_serializer.errors.get('nickname'): if user_serializer.errors['nickname'][0].code == 'required': retdata.error_msg = '昵称是必传的' else: retdata.error_msg = '昵称不合法, 不得超过20个字符' elif user_serializer.errors.get('password'): if user_serializer.errors['password'][0].code == 'required': retdata.error_msg = '密码是必传的' else: retdata.error_msg = '密码不合法,为6到16位字母、数字或合法符号' elif user_serializer.errors.get('email'): if user_serializer.errors['email'][0].code == 'required': retdata.error_msg = '邮箱是必传的' else: retdata.error_msg = '邮箱格式错误或不支持的邮箱' return Response(retdata.result) username = user_serializer.validated_data.get('username') email = user_serializer.validated_data.get('email') captcha = user_serializer.validated_data.get('captcha') has_username = User.objects.filter(username=username).first() has_email = User.objects.filter(email=email).first() if not has_username and not has_email: with ValidateCaptcha(email=email, captcha=captcha) as captcha_validator: ret = captcha_validator.validate(settings.REGISTER_EMAIL_CAPTCHA_KEY_NAME) if not ret['flag']: retdata = BaseResponse( code=0, msg='error', error_msg=ret['result'] ) return Response(retdata.result) user_serializer.save() retdata = BaseResponse( code=1, msg='success', success_msg='用户创建成功' ) return Response(retdata.result) retdata = BaseResponse( code=0, msg='error', error_msg='用户名或邮箱已存在' ) return Response(retdata.result)
def patch(self, request, *args, **kwargs): face_groups = FaceGroup.objects.filter(user=request.user) serializer = FaceGroupSerializer(instance=face_groups, data=request.data, partial=True) if not serializer.is_valid(): retdata = BaseResponse(code=0, msg='error') if serializer.errors.get('face_group_id'): retdata.error_msg = '人脸库ID不合法,为6-20位字母、数字或下划线' elif serializer.errors.get('name'): retdata.error_msg = '人脸库名称不得超过30个字符或为空' elif serializer.errors.get('description'): retdata.error_msg = '人脸库描述不得超过300个字符' return Response(retdata.result) face_group_id = serializer.validated_data.get('face_group_id') name = serializer.validated_data.get('name') description = serializer.validated_data.get('description') if not name and not description: retdata = BaseResponse(code=0, msg='error', error_msg='请传入须修改数据') return Response(retdata.result) if not face_group_id: retdata = BaseResponse(code=0, msg='error', error_msg='必须传入分组ID') return Response(retdata.result) face_group = FaceGroup.objects.filter( user=request.user, face_group_id=face_group_id).first() if not face_group: retdata = BaseResponse(code=0, msg='error', error_msg='无指定人脸库') return Response(retdata.result) if face_group.bound: retdata = BaseResponse(code=0, msg='error', error_msg='人脸库已绑定摄像头,请先解除绑定后修改信息') return Response(retdata.result) new_face_group_obj = serializer.save() retdata = BaseResponse( code=1, msg='success', data=FaceGroupSerializer(new_face_group_obj).data, success_msg='人脸库信息修改成功') return Response(retdata.result)
def get(self, request, *args, **kwargs): """ Check if user exists """ if not request.query_params: retdata = BaseResponse( code=0, msg='error', error_msg='传入参数不能为空' ) return Response(retdata.result) query_serializer = HasUserSerializer(data=request.query_params) if not query_serializer.is_valid(): retdata = BaseResponse( code=0, msg='error' ) if query_serializer.errors.get('email'): retdata.error_msg = '邮箱格式错误或不支持的邮箱' elif query_serializer.errors.get('username'): retdata.error_msg = '用户名不合法,为6到16位字母、数字或下划线' return Response(retdata.result) username = query_serializer.validated_data.get('username', False) email = query_serializer.validated_data.get('email', False) if username and not email: has_user_username = User.objects.filter(username=username).first() if has_user_username: retdata = BaseResponse( code=1, msg='success', data=1, success_msg='用户名已存在' ) return Response(retdata.result) retdata = BaseResponse( code=1, msg='success', data=0, success_msg='用户名不存在,可创建' ) return Response(retdata.result) elif email and not username: has_user_email = User.objects.filter(email=email).first() if has_user_email: retdata = BaseResponse( code=1, msg='success', data=1, success_msg='该邮箱已绑定其他用户' ) return Response(retdata.result) retdata = BaseResponse( code=1, msg='success', data=0, success_msg='该邮箱未绑定其他用户,可绑定新用户' ) return Response(retdata.result) else: retdata = BaseResponse( code=0, msg='error', error_msg='用户名和邮箱不能同时传入或请求参数不合法' ) return Response(retdata.result)
def delete(self, request, *args, **kwargs): user_serializer = CloseUserSerializer(data=request.data) if not user_serializer.is_valid(): retdata = BaseResponse( code=0, msg='error' ) if user_serializer.errors.get('username'): retdata.error_msg = '用户名不合法,为6到16位字母、数字或下划线' elif user_serializer.errors.get('email'): retdata.error_msg = '邮箱格式错误或不支持的邮箱' elif user_serializer.errors.get('password'): if user_serializer.errors['password'][0].code == 'required': retdata.error_msg = '账号或密码是必须的' else: retdata.error_msg = '密码不合法,为6到16位字母、数字或合法符号' elif user_serializer.errors.get('force'): retdata.error_msg = 'force字段是bool类型' return Response(retdata.result) username = user_serializer.validated_data.get('username', False) email = user_serializer.validated_data.get('email', False) password = user_serializer.validated_data['password'] if username and not email: user_obj = User.objects.filter(username=username).first() elif email and not username: user_obj = User.objects.filter(email=email).first() elif email and username: retdata = BaseResponse( code=0, msg='error', error_msg='用户名和邮箱不能同时传入' ) return Response(retdata.result) else: retdata = BaseResponse( code=0, msg='error', error_msg='账号是必须的' ) return Response(retdata.result) if not user_obj: retdata = BaseResponse( code=0, msg='error', error_msg='该用户未注册' ) return Response(retdata.result) if not user_obj.check_password(raw_password=password): retdata = BaseResponse( code=0, msg='error', error_msg='密码错误' ) return Response(retdata.result) cameras = Camera.objects.filter(user=user_obj) if cameras: for camera in cameras: if camera.state in (20, 21, 22): if not user_serializer.validated_data['force']: retdata = BaseResponse( code=0, msg='error', error_msg='该用户存在执行任务' ) return Response(retdata.result) task_id = user_obj.username + '_' + camera.camera_id periodic_task = PeriodicTask.objects.filter(name=task_id).first() periodic_task.enabled = False periodic_task.save() periodic_task.delete() user_obj.delete() retdata = BaseResponse( code=1, msg='success', success_msg='用户注销成功' ) return Response(retdata.result)
def patch(self, request, *args, **kwargs): data_serializer = UpdateEmailSerializer(data=request.data) if not data_serializer.is_valid(): retdata = BaseResponse( code=0, msg='error' ) if data_serializer.errors.get('username'): retdata.error_msg = '用户名不合法,为6到16位字母、数字或下划线' elif data_serializer.errors.get('email'): retdata.error_msg = '邮箱格式错误或不支持的邮箱' elif data_serializer.errors.get('password'): if data_serializer.errors['password'][0].code == 'required': retdata.error_msg = '账号或密码是必须的' else: retdata.error_msg = '密码不合法,为6到16位字母、数字或合法符号' elif data_serializer.errors.get('new_email'): if data_serializer.errors['new_email'][0].code == 'required': retdata.error_msg = '新邮箱是必须的' else: retdata.error_msg = '新邮箱格式错误或不支持的邮箱' elif data_serializer.errors.get('captcha'): if data_serializer.errors['captcha'][0].code == 'required': retdata.error_msg = '验证码是必须的' else: retdata.error_msg = '验证码格式错误,为5位数字' return Response(retdata.result) username = data_serializer.validated_data.get('username', False) email = data_serializer.validated_data.get('email', False) captcha = data_serializer.validated_data['captcha'] new_email = data_serializer.validated_data['new_email'] password = data_serializer.validated_data['password'] if username and not email: user_obj = User.objects.filter(username=username).first() elif email and not username: user_obj = User.objects.filter(email=email).first() elif email and username: retdata = BaseResponse( code=0, msg='error', error_msg='用户名与邮箱不能同时传入' ) return Response(retdata.result) else: retdata = BaseResponse( code=0, msg='error', error_msg='账号必须传入' ) return Response(retdata.result) has_email = User.objects.filter(email=new_email).first() flag = user_obj and not has_email if flag: with ValidateCaptcha(email=new_email, captcha=captcha) as captcha_validator: ret = captcha_validator.validate(settings.UPDATE_EMAIL_CAPTCHA_KEY_NAME) if not ret['flag']: retdata = BaseResponse( code=0, msg='error', error_msg=ret['result'] ) return Response(retdata.result) if user_obj.check_password(raw_password=password): user_obj.email = new_email user_obj.save() retdata = BaseResponse( code=1, msg='success', success_msg='修改邮件成功' ) return Response(retdata.result) retdata = BaseResponse( code=0, msg='error', error_msg='用户验证失败,密码错误' ) return Response(retdata.result) elif not user_obj: retdata = BaseResponse( code=0, msg='error', error_msg='账户不存在' ) return Response(retdata.result) retdata = BaseResponse( code=0, msg='error', error_msg='新邮件已绑定到其他用户' ) return Response(retdata.result)
def patch(self, request, *args, **kwargs): user_serializer = UpdatePasswordSerializer(data=request.data) if not user_serializer.is_valid(): retdata = BaseResponse( code=0, msg='error' ) if user_serializer.errors.get('username'): retdata.error_msg = '用户名不合法,为6到16位字母、数字或下划线' elif user_serializer.errors.get('email'): retdata.error_msg = '邮箱格式错误或不支持的邮箱' elif user_serializer.errors.get('password'): if user_serializer.errors['password'][0].code == 'required': retdata.error_msg = '账号或密码是必须的' else: retdata.error_msg = '密码不合法,为6到16位字母、数字或合法符号' elif user_serializer.errors.get('new_password'): if user_serializer.errors['new_password'][0].code == 'required': retdata.error_msg = '新密码是必须的' else: retdata.error_msg = '密码不合法,为6到16位字母、数字或合法符号' return Response(retdata.result) username = user_serializer.validated_data.get('username', False) email = user_serializer.validated_data.get('email', False) password = user_serializer.validated_data['password'] new_password = user_serializer.validated_data['new_password'] if username and not email: user_obj = User.objects.filter(username=username).first() elif email and not username: user_obj = User.objects.filter(email=email).first() elif email and username: retdata = BaseResponse( code=0, msg='error', error_msg='邮箱和用户名不能同时传入' ) return Response(retdata.result) else: retdata = BaseResponse( code=0, msg='error', error_msg='账号是必须的' ) return Response(retdata.result) if user_obj is None: retdata = BaseResponse( code=0, msg='error', error_msg='用户不存在' ) return Response(retdata.result) elif user_obj.check_password(raw_password=password): user_obj.set_password(new_password) user_obj.save() retdata = BaseResponse( code=1, msg='success', success_msg='密码修改成功' ) return Response(retdata.result) retdata = BaseResponse( code=0, msg='error', error_msg='原密码错误' ) return Response(retdata.result)
def patch(self, request, *args, **kwargs): data_serializer = ForgotPasswordSerializer(data=request.data) if not data_serializer.is_valid(): retdata = BaseResponse( code=0, msg='error' ) if data_serializer.errors.get('email'): if data_serializer.errors['email'][0].code == 'required': retdata.error_msg = '邮箱是必传的' else: retdata.error_msg = '邮箱格式不合法或不支持的邮箱' elif data_serializer.errors.get('new_password'): if data_serializer.errors['new_password'][0].code == 'required': retdata.error_msg = '新密码是必传的' else: retdata.error_msg = '密码不合法,为6到16位字母、数字或合法符号' elif data_serializer.errors.get('captcha'): if data_serializer.errors['captcha'][0].code == 'required': retdata.error_msg = '验证码是必传的' else: retdata.error_msg = '验证码格式错误,为5位数字' return Response(retdata.result) email = data_serializer.validated_data['email'] captcha = data_serializer.validated_data['captcha'] new_password = data_serializer.validated_data['new_password'] user_obj = User.objects.filter(email=email).first() if user_obj: with ValidateCaptcha(email=email, captcha=captcha) as captcha_validator: ret = captcha_validator.validate(settings.FORGOT_PASSWORD_CAPTCHA_KEY_NAME) if not ret['flag']: retdata = BaseResponse( code=0, msg='error', error_msg=ret['result'] ) return Response(retdata.result) user_obj.set_password(new_password) user_obj.save() retdata = BaseResponse( code=1, msg='success', success_msg='找回密码成功' ) return Response(retdata.result) retdata = BaseResponse( code=0, msg='error', error_msg='账户不存在' ) return Response(retdata.result)