Example #1
0
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.')
Example #2
0
def delete_single_article(art_id):
    """Delete single article by `art_id`."""
    art_id = convert_to_int_for(art_id)
    article = Article.query.get_or_404(art_id,
                                       description='Invalid path params.')
    with db.auto_commit('Delete fail'):
        db.session.delete(article)
    resp_obj = {
        'status': 'success',
        'message': f'{article.id}: {article.title} is already deleted.'
    }
    return jsonify(resp_obj), 202
Example #3
0
def add_article(title, body, category):
    """Add a new article.
    :param title(str): the article title
    :param body(str): the article body
    :param category(Category instance): the article category.
    :return Article (instance)
    """
    article = Article(title=title, body=body)
    article.category = category
    with db.auto_commit():
        db.session.add(article)
    return article
Example #4
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
Example #5
0
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
Example #6
0
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
Example #7
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
Example #8
0
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.')
Example #9
0
def add_user(username, email, password, admin=False):
    user = User(username, email, password, admin=admin)
    with db.auto_commit():
        db.session.add(user)
    return user
Example #10
0
def add_category(name):
    category = Category(name=name)
    with db.auto_commit():
        db.session.add(category)
    return category