def bbs_topic(id): options = {"id": id} page = request.args.get('page', 0, type=int) topic = Topic.query.get(id) if not topic: return render_template("topic_not_found.html") count, num_pages, replies = get_page_query(Reply.query.replies_at_topic(topic.id), page, page_size=DEFAULT_PAGE_REPLIES) def pager_url(p, options): return generate_url(".bbs_topic", page=p, **options) if current_user.is_anonymous(): form = None else: form = ReplyForm(request.form) if request.method == "POST": if current_user.is_anonymous(): return redirect(url_for("auth.login", next=request.path) or "/") if form.validate(): reply = Reply(section=topic.section, node=topic.node, user=current_user, topic=topic, content=form.data["content"], created=datetime.now(), floor=topic.reply_count+1) topic.last_reply_by = current_user.username topic.last_reply_at = datetime.now() topic.reply_count += 1 current_user.profile.replies += 1 node = topic.node node.reply_count += 1 section = topic.section section.reply_count += 1 db.session.add_all([reply, topic, current_user.profile, node, section]) db.session.commit() return redirect(pager_url((reply.floor-1)/DEFAULT_PAGE_REPLIES, options)) return render_template("topic.html", topic=topic, options=options, count=count, pager_url=pager_url, num_pages=num_pages, page=page, replies=replies, form=form) topic.hits += 1 db.session.commit() markdowner = Markdown() topic.content = markdowner.convert(topic.content) for r in replies: r.content = markdowner.convert(r.content) return render_template("topic.html", topic=topic, options=options, count=count, pager_url=pager_url, num_pages=num_pages, page=page, replies=replies, form=form )
def post(self, reply_id): reply = Reply.get(id=reply_id) if not reply or (reply.author != self.current_user and not self.current_user.is_admin): return self.redirect_next_url() user = self.current_user form = ReplyForm(self.request.arguments) if form.validate(): reply = form.save(user=user, topic=reply.topic, reply=reply) reply.put_notifier() result = {'status': 'success', 'message': '评论修改成功', 'reply_url': reply.url} return self.send_result(result, reply.url) data = dict(form=form, reply=reply) return self.send_result_and_render(form.result, "reply/edit.html", data)
def post(self): if not self.has_permission: return page = int(self.get_argument('page', 1)) topic_id = int(self.get_argument('topic_id', 0)) topic = Topic.get(id=topic_id) if not topic_id: result = {'status': 'error', 'message': '无此主题,不能创建评论'} if self.is_ajax: return self.write(result) else: self.flash_message(result) return self.redirect_next_url() user = self.current_user form = ReplyForm(self.request.arguments) if form.validate(): reply = form.save(user=user, topic=topic) if 'class="mention"' in reply.content: put_notifier(reply) result = { 'status': 'success', 'message': '评论创建成功', 'content': reply.content, 'name': reply.author.name, 'nickname': reply.author.nickname, 'author_avatar': reply.author.get_avatar(size=48), 'author_url': reply.author.url, 'author_name': reply.author.name, 'author_nickname': reply.author.nickname, 'reply_url': reply.url, 'created': reply.created, 'id': reply.id, 'floor': reply.floor } if self.is_ajax: return self.write(result) self.flash_message(result) return self.redirect(topic.url) if self.is_ajax: return self.write(form.result) self.flash_message(form.result) return self.render("topic/index.html", form=form, topic=topic, category='index', page=page)
def post(self, reply_id): if not self.has_permission: return reply = Reply.get(id=reply_id) if not reply or (reply.author != self.current_user and not self.current_user.is_admin): return self.redirect_next_url() user = self.current_user form = ReplyForm(self.request.arguments) if form.validate(): reply = form.save(user=user, topic=reply.topic, reply=reply) result = {"status": "success", "message": "评论修改成功", "reply_url": reply.url} if self.is_ajax: return self.write(result) self.flash_message(result) return self.redirect(reply.url) if self.is_ajax: return self.write(form.result) return self.render("reply/edit.html", form=form, reply=reply)
def post(self, reply_id): if not self.has_permission: return reply = Reply.get(id=reply_id) if not reply: return self.redirect_next_url() user = self.current_user form = ReplyForm(self.request.arguments) if form.validate(): reply = form.save(user=user, topic=reply.topic, reply=reply) result = {'status': 'success', 'message': '评论修改成功', 'reply_url': reply.url} if self.is_ajax: return self.write(result) self.flash_message(result) return self.redirect(reply.url) if self.is_ajax: return self.write(form.result) return self.render("reply/edit.html", form=form, reply=reply)
def post(self): if not self.has_permission: return page = int(self.get_argument("page", 1)) topic_id = int(self.get_argument("topic_id", 0)) topic = Topic.get(id=topic_id) if not topic_id: result = {"status": "error", "message": "无此主题,不能创建评论"} if self.is_ajax: return self.write(result) else: self.flash_message(result) return self.redirect_next_url() user = self.current_user form = ReplyForm(self.request.arguments) if form.validate(): reply = form.save(user=user, topic=topic) if 'class="mention"' in reply.content: put_notifier(reply) result = { "status": "success", "message": "评论创建成功", "content": reply.content, "name": reply.author.name, "nickname": reply.author.nickname, "author_avatar": reply.author.get_avatar(size=48), "author_url": reply.author.url, "author_name": reply.author.name, "author_nickname": reply.author.nickname, "reply_url": reply.url, "created": reply.created, "id": reply.id, "floor": reply.floor, } if self.is_ajax: return self.write(result) self.flash_message(result) return self.redirect(topic.url) if self.is_ajax: return self.write(form.result) self.flash_message(form.result) return self.render("topic/index.html", form=form, topic=topic, category="index", page=page)
def post(self): if not self.has_permission: return page = int(self.get_argument('page', 1)) topic_id = int(self.get_argument('topic_id', 0)) topic = Topic.get(id=topic_id) if not topic_id: result = {'status': 'error', 'message': '无此主题,不能创建评论'} if self.is_ajax: return self.write(result) else: self.flash_message(result) return self.redirect_next_url() user = self.current_user form = ReplyForm(self.request.arguments) if form.validate(): reply = form.save(user=user, topic=topic) if 'class="mention"' in reply.content: put_notifier(reply) result = {'status': 'success', 'message': '评论创建成功', 'content': reply.content, 'name': reply.author.name, 'nickname': reply.author.nickname, 'author_avatar': reply.author.get_avatar(size=48), 'author_url': reply.author.url, 'author_name': reply.author.name, 'author_nickname': reply.author.nickname, 'reply_url': reply.url, 'created': reply.created, 'id': reply.id, 'floor': reply.floor} if self.is_ajax: return self.write(result) self.flash_message(result) return self.redirect(topic.url) if self.is_ajax: return self.write(form.result) self.flash_message(form.result) return self.render("topic/index.html", form=form, topic=topic, category='index', page=page)
def post(self): page = int(self.get_argument('page', 1)) category = self.get_argument('category', 'index') topic_id = int(self.get_argument('topic_id', 0)) topic = Topic.get(id=topic_id) if not topic_id: result = {'status': 'error', 'message': '无此主题,不能创建评论'} if self.is_ajax: return self.write(result) else: self.flash_message(**result) return self.redirect_next_url() user = self.current_user form = ReplyForm(self.request.arguments) if form.validate(): reply = form.save(user=user, topic=topic) reply.put_notifier() result = {'status': 'success', 'message': '评论创建成功', 'content': reply.content, 'name': reply.author.name, 'nickname': reply.author.nickname, 'author_avatar': reply.author.get_avatar(size=48), 'author_url': reply.author.url, 'author_name': reply.author.name, 'author_nickname': reply.author.nickname, 'reply_url': reply.url, 'created': reply.created, 'id': reply.id, 'floor': reply.floor} if self.is_ajax: return self.write(result) self.flash_message(**result) return self.redirect(topic.url) reply_count = topic.reply_count page_count = (reply_count + config.reply_paged - 1) // config.reply_paged replies = topic.get_replies(page=page, category=category) data = dict(form=form, topic=topic, replies=replies, category=category, page=page, page_count=page_count, url=topic.url) return self.send_result_and_render(form.result, "topic/index.html", data)
def bbs_topic(id): options = {"id": id} page = request.args.get('page', 0, type=int) topic = Topic.query.get(id) if not topic: return render_template("topic_not_found.html") count, num_pages, replies = get_page_query(Reply.query.replies_at_topic( topic.id), page, page_size=DEFAULT_PAGE_REPLIES) def pager_url(p, options): return generate_url(".bbs_topic", page=p, **options) if current_user.is_anonymous(): form = None else: form = ReplyForm(request.form) if request.method == "POST": if current_user.is_anonymous(): return redirect(url_for("auth.login", next=request.path) or "/") if form.validate(): reply = Reply(section=topic.section, node=topic.node, user=current_user, topic=topic, content=form.data["content"], created=datetime.now(), floor=topic.reply_count + 1) topic.last_reply_by = current_user.username topic.last_reply_at = datetime.now() topic.reply_count += 1 current_user.profile.replies += 1 node = topic.node node.reply_count += 1 section = topic.section section.reply_count += 1 db.session.add_all( [reply, topic, current_user.profile, node, section]) db.session.commit() return redirect( pager_url((reply.floor - 1) / DEFAULT_PAGE_REPLIES, options)) return render_template("topic.html", topic=topic, options=options, count=count, pager_url=pager_url, num_pages=num_pages, page=page, replies=replies, form=form) topic.hits += 1 db.session.commit() markdowner = Markdown() topic.content = markdowner.convert(topic.content) for r in replies: r.content = markdowner.convert(r.content) return render_template("topic.html", topic=topic, options=options, count=count, pager_url=pager_url, num_pages=num_pages, page=page, replies=replies, form=form)