예제 #1
0
파일: auth.py 프로젝트: spruce-cq/sblog
def register_user():
    """User register."""
    form = UserForm()
    resp_message = 'Invalid payload.'
    if not form.validate():
        return BadRequest(resp_message)

    username = form.username.data
    email = form.email.data
    password = form.password.data
    user = User.query.filter(
        or_(User.username == username, User.email == email)).first()
    if not user:
        with db.auto_commit(resp_message):
            new_user = User(username, email, password)
            db.session.add(new_user)
        # generate auth token
        auth_token = new_user.encode_auth_token()
        response_object = {
            'status': 'success',
            'message': 'Successfully registered.',
            'auth_token': auth_token.decode()
        }
        return jsonify(response_object), 201
    else:
        return BadRequest('Sorry, that user already existing.')
예제 #2
0
 def auto_commit(self, exp_descp=None):
     try:
         yield
         db.session.commit()
     except Exception:
         db.session.rollback()
         raise BadRequest(exp_descp)
예제 #3
0
def add_article():
    """Add a new article."""
    form = ArticleForm()
    resp_msg = 'Invalid payload.'
    if not form.validate():
        return BadRequest(resp_msg)
    title = form.title.data
    body = form.body.data
    category = form.category.data
    article = Article.query.filter_by(title=title).count()
    if article > 0:
        return BadRequest('The article already exists')
    article = Article(title=title, body=body, category_id=category)
    with db.auto_commit(resp_msg):
        db.session.add(article)
    resp_obj = {'status': 'success', 'message': f'article: {title} was added.'}
    return jsonify(resp_obj), 201
예제 #4
0
파일: category.py 프로젝트: spruce-cq/sblog
def add_category():
    """Add a new category."""
    form = CategoryForm()
    resp_msg = 'Invalid payload.'
    if not form.validate():
        return BadRequest(resp_msg)
    name = form.name.data
    category = Category.query.filter_by(name=name).first()
    if category:
        return BadRequest('The category already exists.')
    with db.auto_commit(resp_msg):
        category = Category(name=name)
        db.session.add(category)
    resp_pbj = {
        'status': 'success',
        'message': f'category: {name} was added.'
    }
    return jsonify(resp_pbj), 201
예제 #5
0
파일: users.py 프로젝트: spruce-cq/sblog
def add_user():
    """Add a new user, you must have permissions"""
    form = UserForm()
    resp_message = 'Invalid payload.'
    if not form.validate():
        return BadRequest(resp_message)

    username = form.username.data
    email = form.email.data
    password = form.password.data
    user = User.query.filter_by(email=email).first()
    if not user:
        with db.auto_commit(resp_message):
            user = User(username, email, password)
            db.session.add(user)
        response_object = {
            'status': 'success',
            'message': f'{email} was added'
        }
        return jsonify(response_object), 201
    else:
        return BadRequest('Sorry, the email is already existing.')
예제 #6
0
파일: category.py 프로젝트: spruce-cq/sblog
def get_single_category_by(cate_id):
    """Get Category by category's id."""
    resp_message = 'Invalid payload.'
    try:
        cate_id = int(cate_id)
    except ValueError:
        return BadRequest(resp_message)

    category = Category.query.get_or_404(cate_id, resp_message)
    resp_obj = {
        'status': 'success',
        'data': toDict(category)
    }
    return jsonify(resp_obj), 200
예제 #7
0
파일: category.py 프로젝트: spruce-cq/sblog
def delete_single_category(cate_id):
    """Delete category by id."""
    resp_message = 'Invalid payload.'
    try:
        cate_id = int(cate_id)
    except ValueError:
        return BadRequest(resp_message)
    category = Category.query.get_or_404(cate_id, resp_message)
    with db.auto_commit():
        db.session.delete(category)
    resp_obj = {
        'status': 'success',
        'message': f'{category.id}: {category.name} is already deleted.'
    }
    # we need return message, so not for 204
    # the http status maybe not properly
    return jsonify(resp_obj), 202
예제 #8
0
def update_single_article():
    """Update singel article by `form.aid.data`."""
    form = ArticleForm()
    resp_msg = 'Invalid payload.'
    if not form.validate():
        return BadRequest(resp_msg)
    aid = form.aid.data
    title = form.title.data
    body = form.body.data
    category = form.category.data
    article = Article.query.get_or_404(aid, description=resp_msg)
    with db.auto_commit(resp_msg):
        article.title = title
        article.body = body
        article.category_id = category
    resp_obj = {
        'status': 'success',
        'message': f'{aid}: article is already updated.'
    }
    return jsonify(resp_obj), 200
예제 #9
0
파일: auth.py 프로젝트: spruce-cq/sblog
def login_user():
    """User log in."""
    form = LoginForm()
    if not form.validate():
        return BadRequest('Invalid payload.')

    email = form.email.data
    password = form.password.data

    user = User.query.filter_by(email=email).first()
    if user and bcrypt.check_password_hash(user.password, password):
        auth_token = user.encode_auth_token()
        response_object = {
            'status': 'success',
            'message': 'Successfully logged in.',
            'auth_token': auth_token.decode()
        }
        return jsonify(response_object), 200
    else:
        return NotFound('User does not exists, or password error.')
예제 #10
0
def convert_to_int_for(ident, description='Invalid payload.'):
    try:
        ident = int(ident)
    except ValueError:
        return BadRequest(description)
    return ident