def save(self, user, forum): topic = Topic(title=self.title.data) post = Post(content=self.content.data) if self.track_topic.data: user.track_topic(topic) return topic.save(user=user, forum=forum, post=post)
def view_topic(topic_id, slug=None): page = request.args.get('page', 1, type=int) # Fetch some information about the topic topic = Topic.get_topic(topic_id=topic_id, user=current_user) # Count the topic views topic.views += 1 topic.save() # fetch the posts in the topic posts = Post.query.\ join(User, Post.user_id == User.id).\ filter(Post.topic_id == topic.id).\ add_entity(User).\ order_by(Post.id.asc()).\ paginate(page, flaskbb_config['POSTS_PER_PAGE'], False) # Update the topicsread status if the user hasn't read it forumsread = None if current_user.is_authenticated(): forumsread = ForumsRead.query.\ filter_by(user_id=current_user.id, forum_id=topic.forum.id).first() topic.update_read(current_user, topic.forum, forumsread) form = None if can_post_reply(user=current_user, topic=topic): form = QuickreplyForm() if form.validate_on_submit(): post = form.save(current_user, topic) return view_post(post.id) return render_template("forum/forum/topic.html", topic=topic, posts=posts, last_seen=time_diff(), form=form)