From 1f0f0ef0be7b89a07aec440140d3ecd7f7a04fd2 Mon Sep 17 00:00:00 2001 From: Aevann1 Date: Sun, 3 Jul 2022 08:12:53 +0200 Subject: [PATCH] messing with joins --- files/classes/user.py | 2 +- files/classes/votes.py | 6 +----- files/helpers/get.py | 4 ++-- files/routes/admin.py | 6 +++--- files/routes/comments.py | 2 +- files/routes/front.py | 18 +++++++++--------- files/routes/posts.py | 8 ++++---- files/routes/static.py | 4 ++-- files/routes/subs.py | 8 ++++---- files/routes/users.py | 40 ++++++++++++++++++++-------------------- 10 files changed, 47 insertions(+), 51 deletions(-) diff --git a/files/classes/user.py b/files/classes/user.py index 9e05f8d2c..f4900800c 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -464,7 +464,7 @@ class User(Base): Comment.is_banned == False, Comment.deleted_utc == 0) if not self.shadowbanned and self.admin_level < 3: - notifs = notifs.join(User, User.id == Comment.author_id).filter(User.shadowbanned == None) + notifs = notifs.join(Notification.user).filter(User.shadowbanned == None) return notifs.count() diff --git a/files/classes/votes.py b/files/classes/votes.py index 524fbc563..54ac59d88 100644 --- a/files/classes/votes.py +++ b/files/classes/votes.py @@ -16,9 +16,6 @@ class Vote(Base): real = Column(Boolean, default=True) created_utc = Column(Integer) - user = relationship("User", lazy="subquery") - post = relationship("Submission", lazy="subquery") - def __init__(self, *args, **kwargs): if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) super().__init__(*args, **kwargs) @@ -61,8 +58,7 @@ class CommentVote(Base): real = Column(Boolean, default=True) created_utc = Column(Integer) - user = relationship("User", lazy="subquery") - comment = relationship("Comment", lazy="subquery") + user = relationship("User") def __init__(self, *args, **kwargs): if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time()) diff --git a/files/helpers/get.py b/files/helpers/get.py index 37724c7f1..70cd80eb8 100644 --- a/files/helpers/get.py +++ b/files/helpers/get.py @@ -272,7 +272,7 @@ def get_comments(cids, v=None, load_parent=False): ).filter(Comment.id.in_(cids)) if not (v and (v.shadowbanned or v.admin_level >= 2)): - comments = comments.join(User, User.id == Comment.author_id).filter(User.shadowbanned == None) + comments = comments.join(Comment.author).filter(User.shadowbanned == None) comments = comments.join( votes, @@ -297,7 +297,7 @@ def get_comments(cids, v=None, load_parent=False): output.append(comment) else: - output = g.db.query(Comment).join(User, User.id == Comment.author_id).filter(User.shadowbanned == None, Comment.id.in_(cids)).all() + output = g.db.query(Comment).join(Comment.author).filter(User.shadowbanned == None, Comment.id.in_(cids)).all() if load_parent: parents = [x.parent_comment_id for x in output if x.parent_comment_id] diff --git a/files/routes/admin.py b/files/routes/admin.py index c59a96c1c..f1015bbcb 100644 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -689,7 +689,7 @@ def bid_list(v, bid): try: page = int(request.values.get("page", 1)) except: page = 1 - users = g.db.query(User).join(Badge, Badge.user_id == User.id).filter(Badge.badge_id==bid).offset(25 * (page - 1)).limit(26).all() + users = g.db.query(User).join(User.badges).filter(Badge.badge_id==bid).offset(25 * (page - 1)).limit(26).all() next_exists = (len(users) > 25) users = users[:25] @@ -844,7 +844,7 @@ def admin_removed(v): if page < 1: abort(400) - ids = g.db.query(Submission.id).join(User, User.id == Submission.author_id).filter(or_(Submission.is_banned==True, User.shadowbanned != None)).order_by(Submission.id.desc()).offset(25 * (page - 1)).limit(26).all() + ids = g.db.query(Submission.id).join(Submission.author).filter(or_(Submission.is_banned==True, User.shadowbanned != None)).order_by(Submission.id.desc()).offset(25 * (page - 1)).limit(26).all() ids=[x[0] for x in ids] @@ -869,7 +869,7 @@ def admin_removed_comments(v): try: page = int(request.values.get("page", 1)) except: page = 1 - ids = g.db.query(Comment.id).join(User, User.id == Comment.author_id).filter(or_(Comment.is_banned==True, User.shadowbanned != None)).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() + ids = g.db.query(Comment.id).join(Comment.author).filter(or_(Comment.is_banned==True, User.shadowbanned != None)).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() ids=[x[0] for x in ids] diff --git a/files/routes/comments.py b/files/routes/comments.py index 833e61e66..83b430585 100644 --- a/files/routes/comments.py +++ b/files/routes/comments.py @@ -98,7 +98,7 @@ def post_pid_comment_cid(cid, pid=None, anything=None, v=None, sub=None): ) if not (v and v.shadowbanned) and not (v and v.admin_level >= 2): - comments = comments.join(User, User.id == Comment.author_id).filter(User.shadowbanned == None) + comments = comments.join(Comment.author).filter(User.shadowbanned == None) comments=comments.filter( Comment.top_comment_id == c.top_comment_id diff --git a/files/routes/front.py b/files/routes/front.py index 04035a6f8..60bba9edf 100644 --- a/files/routes/front.py +++ b/files/routes/front.py @@ -10,7 +10,7 @@ defaulttimefilter = environ.get("DEFAULT_TIME_FILTER", "all").strip() @app.post("/clear") @auth_required def clear(v): - notifs = g.db.query(Notification).join(Comment, Notification.comment_id == Comment.id).filter(Notification.read == False, Notification.user_id == v.id).all() + notifs = g.db.query(Notification).join(Notification.comment).filter(Notification.read == False, Notification.user_id == v.id).all() for n in notifs: n.read = True g.db.add(n) @@ -19,7 +19,7 @@ def clear(v): @app.get("/unread") @auth_required def unread(v): - listing = g.db.query(Notification, Comment).join(Comment, Notification.comment_id == Comment.id).filter( + listing = g.db.query(Notification, Comment).join(Notification.comment).filter( Notification.read == False, Notification.user_id == v.id, Comment.is_banned == False, @@ -53,12 +53,12 @@ def notifications(v): if v and (v.shadowbanned or v.admin_level > 2): comments = g.db.query(Comment).filter(Comment.sentto != None, or_(Comment.author_id==v.id, Comment.sentto==v.id), Comment.parent_submission == None, Comment.level == 1).order_by(Comment.id.desc()).offset(25*(page-1)).limit(26).all() else: - comments = g.db.query(Comment).join(User, User.id == Comment.author_id).filter(User.shadowbanned == None, Comment.sentto != None, or_(Comment.author_id==v.id, Comment.sentto==v.id), Comment.parent_submission == None, Comment.level == 1).order_by(Comment.id.desc()).offset(25*(page-1)).limit(26).all() + comments = g.db.query(Comment).join(Comment.author).filter(User.shadowbanned == None, Comment.sentto != None, or_(Comment.author_id==v.id, Comment.sentto==v.id), Comment.parent_submission == None, Comment.level == 1).order_by(Comment.id.desc()).offset(25*(page-1)).limit(26).all() next_exists = (len(comments) > 25) listing = comments[:25] elif posts: - notifications = g.db.query(Notification, Comment).join(Comment, Notification.comment_id == Comment.id).filter(Notification.user_id == v.id, Comment.author_id == AUTOJANNY_ID).order_by(Notification.created_utc.desc()).offset(25 * (page - 1)).limit(101).all() + notifications = g.db.query(Notification, Comment).join(Notification.comment).filter(Notification.user_id == v.id, Comment.author_id == AUTOJANNY_ID).order_by(Notification.created_utc.desc()).offset(25 * (page - 1)).limit(101).all() listing = [] @@ -75,7 +75,7 @@ def notifications(v): next_exists = (len(notifications) > len(listing)) elif modactions: notifications = g.db.query(Notification, Comment) \ - .join(Comment, Notification.comment_id == Comment.id) \ + .join(Notification.comment) \ .filter(Notification.user_id == v.id, Comment.body_html.like(f'%

{NOTIF_MODACTION_PREFIX}%'), Comment.parent_submission == None, Comment.author_id == NOTIFICATIONS_ID) \ @@ -94,7 +94,7 @@ def notifications(v): next_exists = (len(notifications) > len(listing)) elif reddit: - notifications = g.db.query(Notification, Comment).join(Comment, Notification.comment_id == Comment.id).filter(Notification.user_id == v.id, Comment.body_html.like('%

New site mention: len(listing)) else: - comments = g.db.query(Comment, Notification).join(Notification, Notification.comment_id == Comment.id).filter( + comments = g.db.query(Comment, Notification).join(Notification.comment).filter( Notification.user_id == v.id, Comment.is_banned == False, Comment.deleted_utc == 0, @@ -120,7 +120,7 @@ def notifications(v): ).order_by(Notification.created_utc.desc()) if not (v and (v.shadowbanned or v.admin_level > 2)): - comments = comments.join(User, User.id == Comment.author_id).filter(User.shadowbanned == None) + comments = comments.join(Comment.author).filter(User.shadowbanned == None) comments = comments.offset(25 * (page - 1)).limit(26).all() @@ -290,7 +290,7 @@ def frontlist(v=None, sort="hot", page=1, t="all", ids_only=True, ccmode="false" posts=posts.filter(not_(Submission.title.ilike(f'%{word}%'))) if not (v and v.shadowbanned): - posts = posts.join(User, User.id == Submission.author_id).filter(User.shadowbanned == None) + posts = posts.join(Submission.author).filter(User.shadowbanned == None) if request.host == 'rdrama.net': num = 5 else: num = 0.5 diff --git a/files/routes/posts.py b/files/routes/posts.py index 81df96306..96909532b 100644 --- a/files/routes/posts.py +++ b/files/routes/posts.py @@ -156,7 +156,7 @@ def post_id(pid, anything=None, v=None, sub=None): ) if not (v and v.shadowbanned) and not (v and v.admin_level >= 2): - comments = comments.join(User, User.id == Comment.author_id).filter(User.shadowbanned == None) + comments = comments.join(Comment.author).filter(User.shadowbanned == None) comments=comments.filter(Comment.parent_submission == post.id).join( votes, @@ -198,7 +198,7 @@ def post_id(pid, anything=None, v=None, sub=None): else: pinned = g.db.query(Comment).filter(Comment.parent_submission == post.id, Comment.stickied != None).all() - comments = g.db.query(Comment).join(User, User.id == Comment.author_id).filter(User.shadowbanned == None, Comment.parent_submission == post.id, Comment.level == 1, Comment.stickied == None) + comments = g.db.query(Comment).join(Comment.author).filter(User.shadowbanned == None, Comment.parent_submission == post.id, Comment.level == 1, Comment.stickied == None) comments = sort_comments(sort, comments) @@ -277,7 +277,7 @@ def viewmore(v, pid, sort, offset): ).filter(Comment.parent_submission == pid, Comment.stickied == None, Comment.id.notin_(ids)) if not (v and v.shadowbanned) and not (v and v.admin_level >= 2): - comments = comments.join(User, User.id == Comment.author_id).filter(User.shadowbanned == None) + comments = comments.join(Comment.author).filter(User.shadowbanned == None) comments=comments.join( votes, @@ -309,7 +309,7 @@ def viewmore(v, pid, sort, offset): second = [c[0] for c in comments.filter(or_(Comment.slots_result != None, Comment.blackjack_result != None, Comment.wordle_result != None), func.length(Comment.body_html) <= 100).all()] comments = first + second else: - comments = g.db.query(Comment).join(User, User.id == Comment.author_id).filter(User.shadowbanned == None, Comment.parent_submission == pid, Comment.level == 1, Comment.stickied == None, Comment.id.notin_(ids)) + comments = g.db.query(Comment).join(Comment.author).filter(User.shadowbanned == None, Comment.parent_submission == pid, Comment.level == 1, Comment.stickied == None, Comment.id.notin_(ids)) comments = sort_comments(sort, comments) diff --git a/files/routes/static.py b/files/routes/static.py index f4472b9b0..ec766e137 100644 --- a/files/routes/static.py +++ b/files/routes/static.py @@ -20,7 +20,7 @@ def rdrama(id, title): @auth_required def marseys(v): if SITE_NAME == 'rDrama': - marseys = g.db.query(Marsey, User).join(User, User.id==Marsey.author_id) + marseys = g.db.query(Marsey, User).join(User) sort = request.values.get("sort", "usage") if sort == "usage": marseys = marseys.order_by(Marsey.count.desc(), User.username) else: marseys = marseys.order_by(User.username, Marsey.count.desc()) @@ -39,7 +39,7 @@ def marsey_list(): "tags": emoji.tags.split(" ") + [emoji.name[len("marsey"):] if emoji.name.startswith("marsey") else emoji.name], "count": emoji.count, "class": "Marsey" - } for emoji, author in g.db.query(Marsey, User.username).join(User, User.id==Marsey.author_id).order_by(Marsey.count.desc())] + } for emoji, author in g.db.query(Marsey, User.username).join(User).order_by(Marsey.count.desc())] # Stastic shit shit = open("files/assets/emojis.json", "r", encoding="utf-8") diff --git a/files/routes/subs.py b/files/routes/subs.py index e06cab457..97cde9af8 100644 --- a/files/routes/subs.py +++ b/files/routes/subs.py @@ -155,7 +155,7 @@ def mods(v, sub): sub = g.db.query(Sub).filter_by(name=sub.strip().lower()).one_or_none() if not sub: abort(404) - users = g.db.query(User, Mod).join(Mod, Mod.user_id==User.id).filter_by(sub=sub.name).order_by(Mod.created_utc).all() + users = g.db.query(User, Mod).join(Mod).filter_by(sub=sub.name).order_by(Mod.created_utc).all() return render_template("sub/mods.html", v=v, sub=sub, users=users) @@ -166,7 +166,7 @@ def sub_exilees(v, sub): sub = g.db.query(Sub).filter_by(name=sub.strip().lower()).one_or_none() if not sub: abort(404) - users = g.db.query(User, Exile).join(Exile, Exile.user_id==User.id).filter_by(sub=sub.name).all() + users = g.db.query(User, Exile).join(Exile).filter_by(sub=sub.name).all() return render_template("sub/exilees.html", v=v, sub=sub, users=users) @@ -177,7 +177,7 @@ def sub_blockers(v, sub): sub = g.db.query(Sub).filter_by(name=sub.strip().lower()).one_or_none() if not sub: abort(404) - users = g.db.query(User).join(SubBlock, SubBlock.user_id==User.id).filter_by(sub=sub.name).all() + users = g.db.query(User).join(SubBlock).filter_by(sub=sub.name).all() return render_template("sub/blockers.html", v=v, sub=sub, users=users, verb="blocking") @@ -189,7 +189,7 @@ def sub_followers(v, sub): if not sub: abort(404) users = g.db.query(User) \ - .join(SubSubscription, SubSubscription.user_id==User.id) \ + .join(SubSubscription) \ .filter_by(sub=sub.name).all() return render_template("sub/blockers.html", diff --git a/files/routes/users.py b/files/routes/users.py index 44a8523bf..e9062f751 100644 --- a/files/routes/users.py +++ b/files/routes/users.py @@ -22,8 +22,8 @@ def leaderboard_thread(): db = db_session() - votes1 = db.query(Submission.author_id, func.count(Submission.author_id)).join(Vote, Vote.submission_id==Submission.id).filter(Vote.vote_type==-1).group_by(Submission.author_id).order_by(func.count(Submission.author_id).desc()).all() - votes2 = db.query(Comment.author_id, func.count(Comment.author_id)).join(CommentVote, CommentVote.comment_id==Comment.id).filter(CommentVote.vote_type==-1).group_by(Comment.author_id).order_by(func.count(Comment.author_id).desc()).all() + votes1 = db.query(Submission.author_id, func.count(Submission.author_id)).join(Vote).filter(Vote.vote_type==-1).group_by(Submission.author_id).order_by(func.count(Submission.author_id).desc()).all() + votes2 = db.query(Comment.author_id, func.count(Comment.author_id)).join(CommentVote).filter(CommentVote.vote_type==-1).group_by(Comment.author_id).order_by(func.count(Comment.author_id).desc()).all() votes3 = Counter(dict(votes1)) + Counter(dict(votes2)) users8 = db.query(User).filter(User.id.in_(votes3.keys())).all() users9 = [] @@ -66,7 +66,7 @@ def upvoters_posts(v, username, uid): page = max(1, int(request.values.get("page", 1))) - listing = g.db.query(Submission).join(Vote, Vote.submission_id==Submission.id).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==1, Submission.author_id==id, Vote.user_id==uid).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all() + listing = g.db.query(Submission).join(Vote).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==1, Submission.author_id==id, Vote.user_id==uid).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all() listing = [p.id for p in listing] next_exists = len(listing) > 25 @@ -87,7 +87,7 @@ def upvoters_comments(v, username, uid): page = max(1, int(request.values.get("page", 1))) - listing = g.db.query(Comment).join(CommentVote, CommentVote.comment_id==Comment.id).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==1, Comment.author_id==id, CommentVote.user_id==uid).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() + listing = g.db.query(Comment).join(CommentVote).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==1, Comment.author_id==id, CommentVote.user_id==uid).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() listing = [c.id for c in listing] next_exists = len(listing) > 25 @@ -108,7 +108,7 @@ def downvoters_posts(v, username, uid): page = max(1, int(request.values.get("page", 1))) - listing = g.db.query(Submission).join(Vote, Vote.submission_id==Submission.id).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==-1, Submission.author_id==id, Vote.user_id==uid).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all() + listing = g.db.query(Submission).join(Vote).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==-1, Submission.author_id==id, Vote.user_id==uid).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all() listing = [p.id for p in listing] next_exists = len(listing) > 25 @@ -129,7 +129,7 @@ def downvoters_comments(v, username, uid): page = max(1, int(request.values.get("page", 1))) - listing = g.db.query(Comment).join(CommentVote, CommentVote.comment_id==Comment.id).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==-1, Comment.author_id==id, CommentVote.user_id==uid).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() + listing = g.db.query(Comment).join(CommentVote).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==-1, Comment.author_id==id, CommentVote.user_id==uid).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() listing = [c.id for c in listing] next_exists = len(listing) > 25 @@ -153,7 +153,7 @@ def upvoting_posts(v, username, uid): page = max(1, int(request.values.get("page", 1))) - listing = g.db.query(Submission).join(Vote, Vote.submission_id==Submission.id).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==1, Vote.user_id==id, Submission.author_id==uid).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all() + listing = g.db.query(Submission).join(Vote).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==1, Vote.user_id==id, Submission.author_id==uid).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all() listing = [p.id for p in listing] next_exists = len(listing) > 25 @@ -174,7 +174,7 @@ def upvoting_comments(v, username, uid): page = max(1, int(request.values.get("page", 1))) - listing = g.db.query(Comment).join(CommentVote, CommentVote.comment_id==Comment.id).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==1, CommentVote.user_id==id, Comment.author_id==uid).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() + listing = g.db.query(Comment).join(CommentVote).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==1, CommentVote.user_id==id, Comment.author_id==uid).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() listing = [c.id for c in listing] next_exists = len(listing) > 25 @@ -195,7 +195,7 @@ def downvoting_posts(v, username, uid): page = max(1, int(request.values.get("page", 1))) - listing = g.db.query(Submission).join(Vote, Vote.submission_id==Submission.id).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==-1, Vote.user_id==id, Submission.author_id==uid).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all() + listing = g.db.query(Submission).join(Vote).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==-1, Vote.user_id==id, Submission.author_id==uid).order_by(Submission.created_utc.desc()).offset(25 * (page - 1)).limit(26).all() listing = [p.id for p in listing] next_exists = len(listing) > 25 @@ -216,7 +216,7 @@ def downvoting_comments(v, username, uid): page = max(1, int(request.values.get("page", 1))) - listing = g.db.query(Comment).join(CommentVote, CommentVote.comment_id==Comment.id).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==-1, CommentVote.user_id==id, Comment.author_id==uid).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() + listing = g.db.query(Comment).join(CommentVote).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==-1, CommentVote.user_id==id, Comment.author_id==uid).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all() listing = [c.id for c in listing] next_exists = len(listing) > 25 @@ -255,9 +255,9 @@ def agendaposters(v): def upvoters(v, username): id = get_user(username).id - votes = g.db.query(Vote.user_id, func.count(Vote.user_id)).join(Submission, Vote.submission_id==Submission.id).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==1, Submission.author_id==id).group_by(Vote.user_id).order_by(func.count(Vote.user_id).desc()).all() + votes = g.db.query(Vote.user_id, func.count(Vote.user_id)).join(Submission).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==1, Submission.author_id==id).group_by(Vote.user_id).order_by(func.count(Vote.user_id).desc()).all() - votes2 = g.db.query(CommentVote.user_id, func.count(CommentVote.user_id)).join(Comment, CommentVote.comment_id==Comment.id).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==1, Comment.author_id==id).group_by(CommentVote.user_id).order_by(func.count(CommentVote.user_id).desc()).all() + votes2 = g.db.query(CommentVote.user_id, func.count(CommentVote.user_id)).join(Comment).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==1, Comment.author_id==id).group_by(CommentVote.user_id).order_by(func.count(CommentVote.user_id).desc()).all() votes = Counter(dict(votes)) + Counter(dict(votes2)) @@ -286,9 +286,9 @@ def upvoters(v, username): def downvoters(v, username): id = get_user(username).id - votes = g.db.query(Vote.user_id, func.count(Vote.user_id)).join(Submission, Vote.submission_id==Submission.id).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==-1, Submission.author_id==id).group_by(Vote.user_id).order_by(func.count(Vote.user_id).desc()).all() + votes = g.db.query(Vote.user_id, func.count(Vote.user_id)).join(Submission).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==-1, Submission.author_id==id).group_by(Vote.user_id).order_by(func.count(Vote.user_id).desc()).all() - votes2 = g.db.query(CommentVote.user_id, func.count(CommentVote.user_id)).join(Comment, CommentVote.comment_id==Comment.id).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==-1, Comment.author_id==id).group_by(CommentVote.user_id).order_by(func.count(CommentVote.user_id).desc()).all() + votes2 = g.db.query(CommentVote.user_id, func.count(CommentVote.user_id)).join(Comment).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==-1, Comment.author_id==id).group_by(CommentVote.user_id).order_by(func.count(CommentVote.user_id).desc()).all() votes = Counter(dict(votes)) + Counter(dict(votes2)) @@ -315,9 +315,9 @@ def downvoters(v, username): def upvoting(v, username): id = get_user(username).id - votes = g.db.query(Submission.author_id, func.count(Submission.author_id)).join(Vote, Vote.submission_id==Submission.id).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==1, Vote.user_id==id).group_by(Submission.author_id).order_by(func.count(Submission.author_id).desc()).all() + votes = g.db.query(Submission.author_id, func.count(Submission.author_id)).join(Vote).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==1, Vote.user_id==id).group_by(Submission.author_id).order_by(func.count(Submission.author_id).desc()).all() - votes2 = g.db.query(Comment.author_id, func.count(Comment.author_id)).join(CommentVote, CommentVote.comment_id==Comment.id).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==1, CommentVote.user_id==id).group_by(Comment.author_id).order_by(func.count(Comment.author_id).desc()).all() + votes2 = g.db.query(Comment.author_id, func.count(Comment.author_id)).join(CommentVote).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==1, CommentVote.user_id==id).group_by(Comment.author_id).order_by(func.count(Comment.author_id).desc()).all() votes = Counter(dict(votes)) + Counter(dict(votes2)) @@ -344,9 +344,9 @@ def upvoting(v, username): def downvoting(v, username): id = get_user(username).id - votes = g.db.query(Submission.author_id, func.count(Submission.author_id)).join(Vote, Vote.submission_id==Submission.id).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==-1, Vote.user_id==id).group_by(Submission.author_id).order_by(func.count(Submission.author_id).desc()).all() + votes = g.db.query(Submission.author_id, func.count(Submission.author_id)).join(Vote).filter(Submission.ghost == False, Submission.is_banned == False, Submission.deleted_utc == 0, Vote.vote_type==-1, Vote.user_id==id).group_by(Submission.author_id).order_by(func.count(Submission.author_id).desc()).all() - votes2 = g.db.query(Comment.author_id, func.count(Comment.author_id)).join(CommentVote, CommentVote.comment_id==Comment.id).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==-1, CommentVote.user_id==id).group_by(Comment.author_id).order_by(func.count(Comment.author_id).desc()).all() + votes2 = g.db.query(Comment.author_id, func.count(Comment.author_id)).join(CommentVote).filter(Comment.ghost == False, Comment.is_banned == False, Comment.deleted_utc == 0, CommentVote.vote_type==-1, CommentVote.user_id==id).group_by(Comment.author_id).order_by(func.count(Comment.author_id).desc()).all() votes = Counter(dict(votes)) + Counter(dict(votes2)) @@ -842,7 +842,7 @@ def redditor_moment_redirect(username, v): @auth_required def followers(username, v): u = get_user(username, v=v) - users = g.db.query(User).join(Follow, Follow.target_id == u.id) \ + users = g.db.query(User).join(User.followers) \ .filter(Follow.user_id == User.id) \ .order_by(Follow.created_utc).all() return render_template("followers.html", v=v, u=u, users=users) @@ -851,7 +851,7 @@ def followers(username, v): @auth_required def following(username, v): u = get_user(username, v=v) - users = g.db.query(User).join(Follow, Follow.user_id == u.id) \ + users = g.db.query(User).join(User.following) \ .filter(Follow.target_id == User.id) \ .order_by(Follow.created_utc).all() return render_template("following.html", v=v, u=u, users=users)