Ejemplo n.º 1
0
def sign_in_api():
    if request.method == 'POST':
        try:
            request_data = request.json
            if request_data is None:
                raise ViewProcessJump(code='ILLEGAL_INPUT')
            validator = Validator({
                'name': {
                    'type': 'string',
                    'required': 'True',
                    'maxlength': 16
                },
                'password': {
                    'type': 'string',
                    'required': 'True',
                    'maxlength': 32
                },
            })
            if not validator.validate(request_data):
                raise ViewProcessJump(code='ILLEGAL_USER_INPUT')
            name = validator.document.get('name')
            user = User.query.filter(
                db.text('name = :name')).params(name=name).first()
            if not user:
                raise ViewProcessJump(code='USER_NOT_EXIST')

            resp_json = {
                'status': 'success',
                'data': {
                    'token': str(user.id),
                    'name': user.name
                },
            }
            return jsonify(**resp_json)

        except ViewProcessJump as e:
            if e.code in {
                    'ILLEGAL_INPUT',
                    'ILLEGAL_USER_INPUT',
            }:
                abort(400)
            elif e.code in {
                    'USER_NOT_EXIST',
            }:
                resp_json = {
                    'status': 'fail',
                    'data': {
                        'code': 'USER_NOT_EXIST',
                    },
                }
                return jsonify(**resp_json)
            else:
                assert False
Ejemplo n.º 2
0
def books_api():
    limit_number =2
    if request.method == 'GET':
        request_data = request.args
        if request_data is None:
            raise ViewProcessJump(code='ILLEGAL_GET_REQUEST')
        before_id = int(request_data['before_id'])
        user = g.user
        if before_id == 0:
            items = Book.query.filter(db.text('user_id = :uid')).params(uid=user.id).order_by(Book.id.desc()).limit(limit_number)
        elif before_id > 0:
            items = Book.query.filter(db.text(
                                  'user_id = :uid and id < :before_id'
                                    )).params(
                                        uid=user.id, before_id=before_id
                                        ).order_by(Book.id.desc()).limit(limit_number)
        resp_data = {
                        'status': 'success',
                        'data': {
                            'books': [{
                                'book_id': item.id,
                                'book_name': item.name,
                                'book_price': item.price,
                                'book_intro': item.intro,
                                'book_owner': user.name
                                } for item in items]
                        }
                    }
        if len(resp_data['data']['books']) < limit_number:
            resp_data['data']['next_disable'] = True
        return jsonify(**resp_data)
    elif request.method == 'POST':
        request_data = request.json
        validator = Validator({
            'book_name': {
                'type': 'string',
                'minlength': 2,
                'maxlength': 30,
                'required': True,
            },
            'book_price': {
                'required': True,
            },
            "book_intro": {
                'type': 'string',
            },
        })
        if not validator.validate(request_data):
            resp_data = {
                'status': 'fail',
                'data': {
                    'code': 1,
                    'message': 'validate error',
                }
            }
            return jsonify(**resp_data)
        book = Book(
                name=request_data['book_name'],
                price=request_data['book_price'],
                intro=request_data['book_intro'],
                user_id=g.user.id
        )
        db.session.add(book)
        db.session.commit()
        return jsonify(**{})
Ejemplo n.º 3
0
def sign_up_api():
    if request.method == 'POST':
        try:

            request_data = request.json
            #数据为空
            if request_data is None:
                raise ViewProcessJump(code='ILLEGAL_USER_INPUT')
            #验证器
            validator = Validator({
                'name': {
                    'required': True,
                    'type': 'string',
                    'maxlength': 16,
                },
                'password': {
                    'required': True,
                    'type': 'string',
                    'maxlength': 32,
                },
                'gender': {
                    'required': True,
                    'type': 'integer',
                    'allowed': GENDER_OPTIONS.values(),
                },
            })
            #数据不符合验证器格式
            if not validator.validate(request_data):
                raise ViewProcessJump(code='ILLEGAL_USER_INPUT')

            name = validator.document.get('name')
            password = validator.document.get('password')
            gender = validator.document.get('gender')

            user_existed = User.query.filter(db.text('name = :name')).params(name=name).first()

            if user_existed:
                raise ViewProcessJump(code='USER_NAME_EXISTED')

            user = User()
            db.session.add(user)
            user.name = name
            user.password = password
            user.gender = gender

            db.session.commit()

            resp = {
                'status': 'success',
                'data': {
                    'token': str(user.id),
                    'name': user.name,
                },
            }

            return jsonify(**resp)
        #错误
        except ViewProcessJump as e:
            if e.code in (
                    'ILLEGAL_USER_INPUT',
            ):
                abort(400)
            elif e.code in (
                    'USER_NAME_EXISTED',
            ):
                resp = {
                    'status': 'fail',
                    'data': {
                        'code': API_FAIL_CODES['SIGN_UP']['USER_NAME_EXISTED'],
                    },
                }
                return jsonify(**resp)
            else:
                assert False
Ejemplo n.º 4
0
def sign_up_api():
    if request.method == 'POST':
        try:
            request_data = request.json
            if request_data is None:
                raise ViewProcessJump(code='ILLEGAL_USER_INPUT')
            validator = Validator({
                'name': {
                    'required': True,
                    'type': 'string',
                    'maxlength': 16,
                },
                'password': {
                    'required': True,
                    'type': 'string',
                    'maxlength': 32,
                },
                'gender': {
                    'required': True,
                    'type': 'integer',
                    'allowed': GENDER_OPTIONS.values(),
                },
            })
            if not validator.validate(request_data):
                raise ViewProcessJump(code='ILLEGAL_USER_INPUT')

            name = validator.document.get('name')
            password = validator.document.get('password')
            gender = validator.document.get('gender')

            user_existed = User.query.filter(db.text('name = :name')).params(name=name).first()
            if user_existed:
                raise ViewProcessJump(code='USER_NAME_EXISTED')

            user = User()
            db.session.add(user)
            user.name = name
            user.password = password
            user.gender = gender

            db.session.commit()

            resp = {
                'status': 'success',
                'data': {
                    'token': str(user.id),
                    'name': user.name,
                },
            }

            return jsonify(**resp)

        except ViewProcessJump as e:
            if e.code in (
                    'ILLEGAL_USER_INPUT',
            ):
                abort(400)
            elif e.code in (
                    'USER_NAME_EXISTED',
            ):
                resp = {
                    'status': 'fail',
                    'data': {
                        'code': API_FAIL_CODES['SIGN_UP']['USER_NAME_EXISTED'],
                    },
                }
                return jsonify(**resp)
            else:
                assert False