def create_tables(): User.create_table() Feed.create_table() Link.create_table() Ban.create_table() Comment.create_table() FeedAdmin.create_table() Report.create_table() create_subscriptions_table() DisposableToken.create_table() CommentVote.create_table() LinkVote.create_table()
def create_tables(app): with app.app_context(): from news.models.disposable_token import DisposableToken DisposableToken.create_table() from news.models.feed import Feed Feed.create_table() from news.models.user import User User.create_table() from news.models.link import Link Link.create_table() from news.models.vote import LinkVote LinkVote.create_table() from news.models.comment import Comment Comment.create_table() from news.models.vote import CommentVote CommentVote.create_table() from news.models.subscriptions import create_subscriptions_table create_subscriptions_table() from news.models.feed_admin import FeedAdmin FeedAdmin.create_table() from news.models.report import Report Report.create_table() from news.models.link import SavedLink SavedLink.create_table() from news.models.ban import Ban Ban.create_table()
def archive(self): """ Archive the link Link get archived to save some memory in redis/db by disallowing voting and commenting on old links Upon archiving of the link all votes get deleted and only the final score is kept Same thing happens with the votes on comments of this link - votes get deleted and only final score is kept """ # delete link votes from DB LinkVote.where("link_id", self.id).delete() # delete cached link votes link_upvotes_key, link_downvotes_key = LinkVote.set_keys(self.id) cache.delete(link_upvotes_key) cache.delete(link_downvotes_key) # delete comment votes for comment in Comment.where("link_id", self.id): # delete cached comment votes comment_upvotes_key, comment_downvotes_key = CommentVote.set_keys( comment.id ) cache.delete(comment_upvotes_key) cache.delete(comment_downvotes_key) # delete comment votes from DB CommentVote.where("comment_id", comment.id).delete() # update self with self.get_read_modify_write_lock(): self.archived = True self.update_with_cache()
def to_python(self, value: str) -> Optional[Comment]: if value == "": abort(404) comment = Comment.by_id(value) if comment is None: abort(404) return comment
def comments(self): """ Users posted comments :return: comments """ from news.models.comment import Comment return Comment.where("user_id", self.id).get()
def comment(self) -> "Comment": """ Return the link that was voted on :return: link """ from news.models.comment import Comment if "comment" not in self._relations: self._relations["comment"] = Comment.by_id(self.link_id) return self._relations["comment"]
def thing(self): if "thing" not in self._relations: if self.reportable_type == "comments": from news.models.comment import Comment self._relations["thing"] = Comment.by_id(self.reportable_id) if self.reportable_type == "links": from news.models.link import Link self._relations["thing"] = Link.by_id(self.reportable_id) return self._relations["thing"]
def users_profile(username): user = User.by_username(username) if user is None: abort(404) if user.id == 12345: return render_template("autoposter_profile.html", user=user) links = (Link.where( "user_id", user.id).order_by_raw("ups - downs DESC").limit(9).get()) comments = (Comment.where( "user_id", user.id).order_by_raw("ups - downs DESC").limit(6).get()) administrations = FeedAdmin.by_user_id(user.id) return render_template( "profile.html", user=user, links=links[:min(len(links), 8)], has_more_links=len(links) > 8, comments=comments[:min(len(comments), 5)], has_more_comments=len(comments) > 5, administrations=administrations, active_section="about", )
def comment(self): return Comment.by_id(self.comment_id)