Exemple #1
0
def _update_code(applicant_id):
    specimen_item_rows = get_specimen_item_rows(**{
        'applicant_id': applicant_id,
        'status_delete': STATUS_DEL_NO,
    })
    specimen_item_ids = [item.id for item in specimen_item_rows]
    code_list = gen_code_uppercase(m=len(specimen_item_ids))
    code_list.reverse()
    for i, specimen_item_id in enumerate(specimen_item_ids):
        edit_specimen_item(specimen_item_id, {'code': code_list[i]})
Exemple #2
0
    def delete(self):
        """
        Example:
            curl http://0.0.0.0:8000/user -X DELETE -d '
            {
                "detection": {
                    "id": [1, 2]
                }
            }'
        :return:
        """
        # 是否存在
        request_args = request_parser.parse_args()
        request_item_args = request_delete.parse_args(req=request_args)

        if not request_item_args:
            abort(BadRequest.code, message='参数错误', status=False)

        request_data = request_item_args
        detection_ids = request_data['id']

        detection_row = get_detection_row_by_id(detection_ids[0])
        if not detection_row:
            abort(NotFound.code, message='没有记录', status=False)
        specimen_item_id = detection_row.specimen_item_id

        result = delete_detection(detection_ids)

        if not result:
            abort(BadRequest.code, message='删除失败', status=False)

        # 更新子样分配状态 todo
        detection_rows = get_detection_rows(**{
            'specimen_item_id': specimen_item_id,
            'status_delete': STATUS_DEL_NO,
        })
        if detection_rows:
            status_allocate = 1
            allocate_time = datetime.datetime.now()
        else:
            status_allocate = 0
            allocate_time = None
        edit_specimen_item(specimen_item_id, {
            'status_allocate': status_allocate,
            'allocate_time': allocate_time,
        })

        success_msg = SUCCESS_MSG.copy()
        success_msg['message'] = '删除成功'
        return make_response(jsonify(success_msg), 200)
Exemple #3
0
    def post(self):
        """
        Example:
            curl http://0.0.0.0:8000/detection -H "Content-Type: application/json" -X POST -d '
            {
                "detection": {
                    "name": "a",
                    "specimen_item_id": 1,
                    "manner_id": 1,
                    "note": "hello"
                }
            }'
        :return:
        """
        request_args = request_parser.parse_args()
        request_item_args = request_post.parse_args(req=request_args)

        if not request_item_args:
            abort(BadRequest.code, message='参数错误', status=False)

        request_data = request_item_args

        manner_ids = request_data.pop('manner_id', [])  # 关联数据
        for manner_id in manner_ids:
            request_data['manner_id'] = manner_id
            result = add_detection(request_data)

            if not result:
                abort(BadRequest.code, message='创建失败', status=False)

        # 更新子样分配状态
        if manner_ids:
            edit_specimen_item(request_item_args['specimen_item_id'],
                               {'status_allocate': 1})
        success_msg = SUCCESS_MSG.copy()
        success_msg['message'] = '创建成功'
        return make_response(jsonify(success_msg), 200)
Exemple #4
0
    def put(self, pk):
        """
        Example:
            curl http://0.0.0.0:8000/specimen_item/1 -H "Content-Type: application/json" -X PUT -d '
            {
                "specimen_item": {
                    "name": "specimen_item name put"
                }
            }'
        :param pk:
        :return:
        """
        request_args = request_parser.parse_args()
        request_item_args = request_put.parse_args(req=request_args)

        if not request_item_args:
            abort(BadRequest.code, message='参数错误', status=False)

        # 是否存在
        data = get_specimen_item_row_by_id(pk)

        if not data:
            abort(NotFound.code, message='没有记录', status=False)
        if data.status_delete == STATUS_DEL_OK:
            abort(NotFound.code, message='已经删除', status=False)

        # 更新数据
        request_data = request_item_args
        result = edit_specimen_item(pk, request_data)

        if not result:
            abort(NotFound.code, message='更新失败', status=False)

        success_msg = SUCCESS_MSG.copy()
        success_msg['message'] = '更新成功'
        return make_response(jsonify(success_msg), 200)
Exemple #5
0
    def put(self):
        """
        根据子样编号修改数据
        Example:
            curl http://0.0.0.0:8000/detection -H "Content-Type: application/json" -X PUT -d '
            {
                "detection": {
                    "specimen_item_id": 5,
                    "manner_id": [1],
                    "note": "hello"
                }
            }'
        :return:
        """
        request_args = request_parser.parse_args()
        request_item_args = request_put.parse_args(req=request_args)

        if not request_item_args:
            abort(BadRequest.code, message='参数错误', status=False)

        # 是否存在(子样ID,并非分配ID)
        data = get_specimen_item_row_by_id(
            request_item_args['specimen_item_id'])

        if not data:
            abort(NotFound.code, message='没有记录', status=False)
        if data.status_delete == STATUS_DEL_OK:
            abort(NotFound.code, message='已经删除', status=False)

        # 更新数据
        request_data = request_item_args
        manner_ids = request_data.pop('manner_id', [])  # 关联数据
        # 关联数据(2步)
        result = False
        # 1. 清除历史
        detection_rows = get_detection_rows(
            **{
                'specimen_item_id': request_data['specimen_item_id'],
                'status_delete': STATUS_DEL_NO,
            })
        detection_ids = [detection_row.id for detection_row in detection_rows]
        if detection_ids:
            result = delete_detection(detection_ids)
            if not result:
                abort(BadRequest.code, message='删除失败', status=False)
        # 2. 新增更新
        for manner_id in manner_ids:
            request_data['manner_id'] = manner_id
            result = add_detection(request_data)

            if not result:
                abort(BadRequest.code, message='创建失败', status=False)

        if not result:
            abort(NotFound.code, message='更新失败', status=False)

        # 更新子样分配状态
        if manner_ids:
            status_allocate = 1
            allocate_time = datetime.datetime.now()
        else:
            status_allocate = 0
            allocate_time = None
        edit_specimen_item(request_item_args['specimen_item_id'], {
            'status_allocate': status_allocate,
            'allocate_time': allocate_time,
        })

        success_msg = SUCCESS_MSG.copy()
        success_msg['message'] = '更新成功'
        return make_response(jsonify(success_msg), 200)