Esempio n. 1
0
def create():
    if request.method == 'GET':
        return render_template('articles/form.html', title='create article', header_form='create article', submit_button='create')
    elif request.method == 'POST':
        title = request.form.get("article_title")
        subtitle = request.form.get("article_subtitle")
        body = request.form.get("article_body")
        is_publish = True if request.form.get("article_publish") is not None else False
        article = Article(title=title, subtitle=subtitle, body=body, is_publish=is_publish, writer=session.get('user_id'))
        article.create()
        db.session.commit()
        return redirect(url_for('article.details', article_id=article.id))
Esempio n. 2
0
def create(article_id):
    if Article.find_one({
            'id': article_id,
            'is_publish': True,
            'enabled': True
    }) is not None:
        Comment(article_id=article_id,
                user_id=session.get('user_id'),
                text=request.form.get('comment_text')).create()
        db.session.commit()
    return redirect(url_for('article.details', article_id=article_id))
Esempio n. 3
0
def search():
    filters = dict()
    q = request.args.get('q')
    writer = request.args.get('writer')
    # TODO: tag = request.args.get('tag')
    if q is not None:
        filters['q'] = q
    if writer is not None:
        filters['writer'] = writer
    filters['is_publish'] = True
    articles = Article.find_all(filters)
    return render_template('articles/search.html', filters=filters, articles=articles)
Esempio n. 4
0
def details(article_id):
    article = Article.find_one({'id': article_id})
    # Retrieve and aggregate reactions
    counter_reactions = article.get_reactions()
    # Find user reaction
    reaction = Reaction.find_one({'user_id': session.get('user_id'), 'article_id': article_id})
    user_reaction = reaction.emotion.name if reaction is not None else None
    return render_template('articles/details.html',
                           id=article_id,
                           title=article.title,
                           subtitle=article.subtitle,
                           body=article.body,
                           creation_date=article.creation_date,
                           reactions=counter_reactions,
                           user_reaction=user_reaction,
                           comments=article.comments)
Esempio n. 5
0
def edit(article_id):
    article = Article.find_one({'id': article_id})
    if request.method == 'GET':
        return render_template('articles/form.html',
                               title=article.title,
                               article_title=article.title,
                               article_subtitle=article.subtitle,
                               article_body=article.body,
                               is_publish=article.is_publish,
                               header_form='edit article',
                               submit_button='edit')
    elif request.method == 'POST':
        article.title = request.form.get("article_title")
        article.subtitle = request.form.get("article_subtitle")
        article.body = request.form.get("article_body")
        article.is_publish = True if request.form.get("article_publish") is not None else False
        article.update()
        db.session.commit()
        return redirect(url_for('article.details', article_id=article.id))
Esempio n. 6
0
def react_an_article(article_id):
    if Article.find_one({
            'id': article_id,
            'is_publish': True,
            'enabled': True
    }) is not None:
        reaction = Reaction.find_one({
            'user_id': session.get('user_id'),
            'article_id': article_id
        })
        if reaction is None:
            emotion = Emotions(request.json.get('emotion').upper())
            reaction = Reaction(user_id=session.get('user_id'),
                                article_id=article_id,
                                emotion=emotion)
            reaction.create()
        else:
            reaction.emotion = Emotions(request.json.get('emotion').upper())
        db.session.commit()
    return 'ok'
Esempio n. 7
0
def restore(article_id):
    article = Article.find_one({'id': article_id})
    article.restore()
    db.session.commit()
    return '', 200
Esempio n. 8
0
def delete(article_id):
    article = Article.find_one({'id': article_id})
    article.soft_delete()
    db.session.commit()
    return '', 204
Esempio n. 9
0
def list_all():
    return render_template('articles/management.html', articles=Article.find_all())