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))
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))
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)
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)
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))
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'
def restore(article_id): article = Article.find_one({'id': article_id}) article.restore() db.session.commit() return '', 200
def delete(article_id): article = Article.find_one({'id': article_id}) article.soft_delete() db.session.commit() return '', 204
def list_all(): return render_template('articles/management.html', articles=Article.find_all())