def post(self, forum_id=None, slug=None): # Mark a single forum as read if forum_id is not None: forum_instance = Forum.query.filter_by(id=forum_id).first_or_404() forumsread = ForumsRead.query.filter_by( user_id=real(current_user).id, forum_id=forum_instance.id ).first() TopicsRead.query.filter_by( user_id=real(current_user).id, forum_id=forum_instance.id ).delete() if not forumsread: forumsread = ForumsRead() forumsread.user = real(current_user) forumsread.forum = forum_instance forumsread.last_read = time_utcnow() forumsread.cleared = time_utcnow() db.session.add(forumsread) db.session.commit() flash( _( "Forum %(forum)s marked as read.", forum=forum_instance.title ), "success" ) return redirect(forum_instance.url) # Mark all forums as read ForumsRead.query.filter_by(user_id=real(current_user).id).delete() TopicsRead.query.filter_by(user_id=real(current_user).id).delete() forums = Forum.query.all() forumsread_list = [] for forum_instance in forums: forumsread = ForumsRead() forumsread.user = real(current_user) forumsread.forum = forum_instance forumsread.last_read = time_utcnow() forumsread.cleared = time_utcnow() forumsread_list.append(forumsread) db.session.add_all(forumsread_list) db.session.commit() flash(_("All forums marked as read."), "success") return redirect(url_for("forum.index"))
def test_topic_tracker_needs_update_cleared(database, user, topic): """Tests if the topicsread needs an update if the forum has been marked as cleared. """ forumsread = ForumsRead.query.\ filter(ForumsRead.user_id == user.id, ForumsRead.forum_id == topic.forum_id).first() topicsread = TopicsRead.query.\ filter(TopicsRead.user_id == user.id, TopicsRead.topic_id == topic.id).first() with current_app.test_request_context(): assert topic.tracker_needs_update(forumsread, topicsread) # Update the tracker forumsread = ForumsRead() forumsread.user_id = user.id forumsread.forum_id = topic.forum_id forumsread.last_read = datetime.utcnow() forumsread.cleared = datetime.utcnow() forumsread.save() # Now the topic should be read assert not topic.tracker_needs_update(forumsread, topicsread)
def test_forumsread(topic, user): """Tests if the forumsread tracker can be saved/edited and deleted with the implemented save and delete methods.""" forumsread = ForumsRead() forumsread.user_id = user.id forumsread.forum_id = topic.forum_id forumsread.last_read = datetime.utcnow() forumsread.save() assert forumsread is not None forumsread.delete() forumsread = ForumsRead.query.filter_by(forum_id=forumsread.forum_id).first() assert forumsread is None
def markread(forum_id=None, slug=None): if not current_user.is_authenticated(): flash("You need to be logged in for that feature.", "danger") return redirect(url_for("forum.index")) # Mark a single forum as read if forum_id: forum = Forum.query.filter_by(id=forum_id).first_or_404() forumsread = ForumsRead.query.filter_by(user_id=current_user.id, forum_id=forum.id).first() TopicsRead.query.filter_by(user_id=current_user.id, forum_id=forum.id).delete() if not forumsread: forumsread = ForumsRead() forumsread.user_id = current_user.id forumsread.forum_id = forum.id forumsread.last_read = datetime.datetime.utcnow() forumsread.cleared = datetime.datetime.utcnow() db.session.add(forumsread) db.session.commit() return redirect(forum.url) # Mark all forums as read ForumsRead.query.filter_by(user_id=current_user.id).delete() TopicsRead.query.filter_by(user_id=current_user.id).delete() forums = Forum.query.all() forumsread_list = [] for forum in forums: forumsread = ForumsRead() forumsread.user_id = current_user.id forumsread.forum_id = forum.id forumsread.last_read = datetime.datetime.utcnow() forumsread.cleared = datetime.datetime.utcnow() forumsread_list.append(forumsread) db.session.add_all(forumsread_list) db.session.commit() return redirect(url_for("forum.index"))
def markread(forum_id=None): if not current_user.is_authenticated(): flash("We do not support cookie based unread forums yet.", "danger") return redirect(url_for("forum.index")) # Mark a single forum as read if forum_id: forum = Forum.query.filter_by(id=forum_id).first_or_404() forumsread = ForumsRead.query.filter_by(forum_id=forum.id).first() TopicsRead.query.filter_by(user_id=current_user.id, forum_id=forum.id).delete() if not forumsread: forumsread = ForumsRead() forumsread.user_id = current_user.id forumsread.forum_id = forum.id forumsread.last_read = datetime.datetime.utcnow() forumsread.cleared = datetime.datetime.utcnow() db.session.add(forumsread) db.session.commit() return redirect(url_for("forum.view_forum", forum_id=forum.id)) # Mark all forums as read ForumsRead.query.filter_by(user_id=current_user.id).delete() TopicsRead.query.filter_by(user_id=current_user.id).delete() forums = Forum.query.all() for forum in forums: if forum.is_category: continue forumsread = ForumsRead() forumsread.user_id = current_user.id forumsread.forum_id = forum.id forumsread.last_read = datetime.datetime.utcnow() forumsread.cleared = datetime.datetime.utcnow() db.session.add(forumsread) db.session.commit() return redirect(url_for("forum.index"))
def forumsread(user, forum, forumsread_last_read): """Create a forumsread object for the user and a forum.""" forumsread = ForumsRead() forumsread.user_id = user.id forumsread.forum_id = forum.id forumsread.last_read = forumsread_last_read forumsread.save() return forumsread
def markread(forum_id=None, slug=None): # Mark a single forum as read if forum_id: forum_instance = Forum.query.filter_by(id=forum_id).first_or_404() forumsread = ForumsRead.query.filter_by( user_id=current_user.id, forum_id=forum_instance.id ).first() TopicsRead.query.filter_by(user_id=current_user.id, forum_id=forum_instance.id).delete() if not forumsread: forumsread = ForumsRead() forumsread.user_id = current_user.id forumsread.forum_id = forum_instance.id forumsread.last_read = datetime.datetime.utcnow() forumsread.cleared = datetime.datetime.utcnow() db.session.add(forumsread) db.session.commit() return redirect(forum_instance.url) # Mark all forums as read ForumsRead.query.filter_by(user_id=current_user.id).delete() TopicsRead.query.filter_by(user_id=current_user.id).delete() forums = Forum.query.all() forumsread_list = [] for forum_instance in forums: forumsread = ForumsRead() forumsread.user_id = current_user.id forumsread.forum_id = forum_instance.id forumsread.last_read = datetime.datetime.utcnow() forumsread.cleared = datetime.datetime.utcnow() forumsread_list.append(forumsread) db.session.add_all(forumsread_list) db.session.commit() return redirect(url_for("forum.index"))
def forumsread(user, forum, last_read): """Create a forumsread object for the user and a forum.""" forumsread = ForumsRead() forumsread.user_id = user.id forumsread.forum_id = forum.id forumsread.last_read = last_read forumsread.save() return forumsread
def test_topic_tracker_needs_update(database, user, topic): """Tests if the topicsread tracker needs an update if a new post has been submitted. """ forumsread = ForumsRead.query.\ filter(ForumsRead.user_id == user.id, ForumsRead.forum_id == topic.forum_id).first() topicsread = TopicsRead.query.\ filter(TopicsRead.user_id == user.id, TopicsRead.topic_id == topic.id).first() with current_app.test_request_context(): assert topic.tracker_needs_update(forumsread, topicsread) # Update the tracker topicsread = TopicsRead() topicsread.user_id = user.id topicsread.topic_id = topic.id topicsread.forum_id = topic.forum_id topicsread.last_read = datetime.utcnow() topicsread.save() forumsread = ForumsRead() forumsread.user_id = user.id forumsread.forum_id = topic.forum_id forumsread.last_read = datetime.utcnow() forumsread.save() # Now the topic should be read assert not topic.tracker_needs_update(forumsread, topicsread) post = Post(content="Test Content") post.save(topic=topic, user=user) assert topic.tracker_needs_update(forumsread, topicsread)
def post(self, forum_id=None, slug=None): # Mark a single forum as read if forum_id is not None: forum_instance = Forum.query.filter_by(id=forum_id).first_or_404() forumsread = ForumsRead.query.filter_by( user_id=real(current_user).id, forum_id=forum_instance.id).first() TopicsRead.query.filter_by(user_id=real(current_user).id, forum_id=forum_instance.id).delete() if not forumsread: forumsread = ForumsRead() forumsread.user = real(current_user) forumsread.forum = forum_instance forumsread.last_read = time_utcnow() forumsread.cleared = time_utcnow() db.session.add(forumsread) db.session.commit() flash( _("Forum %(forum)s marked as read.", forum=forum_instance.title), "success") return redirect(forum_instance.url) # Mark all forums as read ForumsRead.query.filter_by(user_id=real(current_user).id).delete() TopicsRead.query.filter_by(user_id=real(current_user).id).delete() forums = Forum.query.all() forumsread_list = [] for forum_instance in forums: forumsread = ForumsRead() forumsread.user = real(current_user) forumsread.forum = forum_instance forumsread.last_read = time_utcnow() forumsread.cleared = time_utcnow() forumsread_list.append(forumsread) db.session.add_all(forumsread_list) db.session.commit() flash(_("All forums marked as read."), "success") return redirect(url_for("forum.index"))
def markread(forum_id=None, slug=None): # Mark a single forum as read if forum_id: forum = Forum.query.filter_by(id=forum_id).first_or_404() forumsread = ForumsRead.query.filter_by(user_id=current_user.id, forum_id=forum.id).first() TopicsRead.query.filter_by(user_id=current_user.id, forum_id=forum.id).delete() if not forumsread: forumsread = ForumsRead() forumsread.user_id = current_user.id forumsread.forum_id = forum.id forumsread.last_read = datetime.datetime.utcnow() forumsread.cleared = datetime.datetime.utcnow() db.session.add(forumsread) db.session.commit() return redirect(forum.url) # Mark all forums as read ForumsRead.query.filter_by(user_id=current_user.id).delete() TopicsRead.query.filter_by(user_id=current_user.id).delete() forums = Forum.query.all() forumsread_list = [] for forum in forums: forumsread = ForumsRead() forumsread.user_id = current_user.id forumsread.forum_id = forum.id forumsread.last_read = datetime.datetime.utcnow() forumsread.cleared = datetime.datetime.utcnow() forumsread_list.append(forumsread) db.session.add_all(forumsread_list) db.session.commit() return redirect(url_for("forum.index"))