def one_blog_page(id): form = CommentsForm() db_sess = db_session.create_session() if form.validate_on_submit(): comment = Comments() comment.text = form.content.data comment.news_id = int(id) comment.name_id = current_user.id db_sess.add(comment) db_sess.commit() return redirect(f'/blogs/{id}') news = db_sess.query(News).filter(News.id == id) comms = db_sess.query(Comments).filter(Comments.news_id == id) comments = [] for c in comms: user = db_sess.query(User).filter(User.id == c.name_id).first() comments.append((user.name, c.text)) cmnts = False if comms is None else True return render_template('one_blog_page.html', news=news[0], current_user=current_user, comms=comms, cmnts=cmnts, form=form, comments=comments)
def add_comment(id): form = CommentsForm() db_sess = db_session.create_session() post = db_sess.query(Posts).filter(Posts.id == id).first() # Если комментарий пэтаются оставить под чужим приватным постом или его пытается оставить пользователь # с ролью "Наблюдатель" - ошибка 404 if post and (not post.is_private or ( post.is_private and post.user == current_user)) and current_user.role != "Spectator": if form.validate_on_submit(): comment = Comments() # Содержание комментария - не более 200 символов if len(form.text.data) > 200: return render_template('Comment.html', title='Adding a comment', form=form, post=post, message="This comment is too big, please, enter up to 200 characters") comment.text = form.text.data comment.post_id = id # Добавляем комментарий к пользователю и к посту current_user.comments.append(comment) db_sess.merge(current_user) db_sess.merge(db_sess.query(Posts).filter(Posts.id == id).first()) db_sess.commit() # Пересылаем пользователя на страницу поста, под которым он оставил комментарий return redirect(f'/post/{id}') return render_template('Comment.html', title='Adding a comment', form=form, post=post) else: abort(404)
def news_item(id): db_sess = db_session.create_session() if current_user.is_authenticated: form = CommentForm() if form.validate_on_submit(): comm = Comments() comm.connected_to_id = id comm.table_name = News.__tablename__ comm.author_id = current_user.id comm.text = form.text.data db_sess.add(comm) db_sess.commit() else: form = None data = db_sess.query(News).get(id) comments = db_sess.query(Comments).filter( Comments.connected_to_id == id, Comments.table_name == News.__tablename__) return render_template("news_item.html", news=data, title=data.title, comments=comments, form=form)
def add_comment(id): form = CommentForm() if form.validate_on_submit(): session = db_session.create_session() comment = Comments() comment.text = form.text.data comment.news_id = id current_user.comments.append(comment) session.merge(current_user) session.commit() return redirect('/') return render_template('comments.html', title='Добавление комментария', form=form)
def publication(id): status = 0 if current_user.is_authenticated: status = current_user.status + 1 session = db_session.create_session() publication = session.query(Publications).get(id) session.close() if publication: form = CommentsForm() if form.submit.data: if current_user.is_authenticated: session = db_session.create_session() user = session.query(User).get(current_user.id) publication = session.query(Publications).get(id) comment = Comments() comment.text = form.text.data comment.created_date = datetime.datetime.now() form.text.data = "" user.comments.append(comment) session.merge(user) publication.comments.append(comment) session.merge(publication) session.commit() session = db_session.create_session() comments = session.query(Comments).filter(Comments.publication_id == id).order_by( Comments.created_date.desc()).all() templ = render_template("/Publication.html", publication=publication, status=status, user=current_user, style=url_for('static', filename='css/style.css'), form=form, comments=comments, count_commentaries=len(comments), base_href=f"Publication/{id}/", bgimg=get_image_profile(current_user)) session.close() return templ else: comments = session.query(Comments).filter(Comments.publication_id == id).order_by( Comments.created_date.desc()).all() templ = render_template("/Publication.html", publication=publication, status=status, user=current_user, style=url_for('static', filename='css/style.css'), form=form, comments=comments, count_commentaries=len(comments), base_href=f"Publication/{id}/", bgimg=get_image_profile(current_user)) session.close() return templ session.close() return redirect('/Publications')
def developers_diary(id): status = 0 if current_user.is_authenticated: status = current_user.status + 1 session = db_session.create_session() ds_diary = session.query(DevelopersDiary).filter(DevelopersDiary.id == id).first() session.close() ds_diary.created_date = ":".join(str(ds_diary.created_date).split(":")[:-1]) if status >= ds_diary.availability_status: form = CommentsForm() if form.submit.data: if current_user.is_authenticated: session = db_session.create_session() user = session.query(User).get(current_user.id) diary = session.query(DevelopersDiary).get(id) comment = Comments() comment.text = form.text.data comment.created_date = datetime.datetime.now() form.text.data = "" user.comments.append(comment) session.merge(user) diary.comments.append(comment) session.merge(diary) session.commit() session = db_session.create_session() comments = session.query(Comments).filter(Comments.developers_diary_publication_id == id).order_by( Comments.created_date.desc()).all() templ = render_template("/DevelopersDiary.html", publication=ds_diary, status=status, user=current_user, style=url_for('static', filename='css/style.css'), form=form, comments=comments, count_commentaries=len(comments), base_href=f"DevelopersDiaryPublication/{id}/", bgimg=get_image_profile(current_user)) session.close() return templ else: comments = session.query(Comments).filter(Comments.developers_diary_publication_id == id).order_by( Comments.created_date.desc()).all() templ = render_template("/DevelopersDiary.html", publication=ds_diary, status=status, user=current_user, style=url_for('static', filename='css/style.css'), form=form, comments=comments, count_commentaries=len(comments), base_href=f"DevelopersDiaryPublication/{id}/", bgimg=get_image_profile(current_user)) session.close() return templ return redirect('/DevelopersDiary')
def index(): session = db_session.create_session() # Отображение новостей if current_user.is_authenticated: news = session.query(News).filter((News.user == current_user) | (News.is_private != True)) else: news = session.query(News).filter(News.is_private != True) # Отображение комментариев comments = session.query(Comments).filter() # Форма для добавления комментария form = CommentForm() if form.validate_on_submit(): comment = Comments() comment.text = form.text.data comment.news_id = int(''.join(form.news_id.raw_data)) current_user.comment.append(comment) session.merge(current_user) session.commit() return redirect('/') # Форма для удаления комментария delete_form = CommentDelete() if delete_form.validate_on_submit() and current_user.is_authenticated: comm = session.query(Comments).filter(Comments.id == int(''.join( delete_form.comment_id.raw_data))).first() if comm: session.delete(comm) session.commit() else: abort(404) return redirect('/') return render_template("index.html", news=news, comments=comments, form=form, form_del=delete_form, title="Форум Питонистов")