diff --git a/docker-compose.yml b/docker-compose.yml index b53fb74b3..ac99b2d20 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -27,7 +27,7 @@ services: postgres: image: postgres:12.3 - command: ["postgres", "-c", "log_statement=all"] + # command: ["postgres", "-c", "log_statement=all"] # uncomment this if u wanna output all SQL queries to the console volumes: - "./schema.sql:/docker-entrypoint-initdb.d/00-schema.sql" diff --git a/files/classes/comment.py b/files/classes/comment.py index 9c400ffcd..32e9e3ef0 100644 --- a/files/classes/comment.py +++ b/files/classes/comment.py @@ -107,6 +107,13 @@ class Comment(Base): flags.remove(flag) return flags + @lazy + def poll_voted(self, v): + if v: + vote = g.db.query(CommentVote.vote_type).filter_by(user_id=v.id, comment_id=self.id).one_or_none() + if vote: return vote[0] + return None + @property @lazy def options(self): @@ -121,13 +128,13 @@ class Comment(Base): def total_poll_voted(self, v): if v: for option in self.options: - if option.voted: return True + if option.poll_voted(v): return True return False @lazy def total_choice_voted(self, v): if v: - return g.db.query(CommentVote).filter(CommentVote.user_id == v.id, CommentVote.comment_id.in_([x.id for x in self.choices])).count() + return g.db.query(CommentVote).filter(CommentVote.user_id == v.id, CommentVote.comment_id.in_([x.id for x in self.choices])).all() return False @property @@ -240,7 +247,7 @@ class Comment(Base): if not self.parent_submission: return [x for x in self.child_comments.order_by(Comment.id) if not x.author.shadowbanned] - comments = self.child_comments.filter(Comment.author_id.notin_(poll_bots)) + comments = self.child_comments.filter(Comment.author_id.notin_((AUTOPOLLER_ID, AUTOBETTER_ID, AUTOCHOICE_ID))) comments = sort_comments(sort, comments) return [x for x in comments if not x.author.shadowbanned] @@ -251,7 +258,7 @@ class Comment(Base): if not self.parent_submission: return self.child_comments.order_by(Comment.id).all() - comments = self.child_comments.filter(Comment.author_id.notin_(poll_bots)) + comments = self.child_comments.filter(Comment.author_id.notin_((AUTOPOLLER_ID, AUTOBETTER_ID, AUTOCHOICE_ID))) return sort_comments(sort, comments).all() @@ -407,7 +414,7 @@ class Comment(Base): for c in self.options: body += f'
' diff --git a/files/classes/submission.py b/files/classes/submission.py index 1b6b283cc..11fc38571 100644 --- a/files/classes/submission.py +++ b/files/classes/submission.py @@ -122,13 +122,13 @@ class Submission(Base): def total_poll_voted(self, v): if v: for option in self.options: - if option.voted: return True + if option.poll_voted(v): return True return False @lazy def total_choice_voted(self, v): if v and self.choices: - return g.db.query(CommentVote).filter(CommentVote.user_id == v.id, CommentVote.comment_id.in_([x.id for x in self.choices])).count() + return g.db.query(CommentVote).filter(CommentVote.user_id == v.id, CommentVote.comment_id.in_([x.id for x in self.choices])).all() return False @lazy @@ -136,7 +136,7 @@ class Submission(Base): if "closed" in self.body.lower(): return True if v: for option in self.bet_options: - if option.voted: return True + if option.poll_voted(v): return True return False @property @@ -387,7 +387,7 @@ class Submission(Base): return url @lazy - def realbody(self, v, show_polls=False): + def realbody(self, v): if self.club and not (v and (v.paid_dues or v.id == self.author_id)): return f"

{CC} ONLY

" body = self.body_html or "" @@ -407,43 +407,43 @@ class Submission(Base): self.upvotes += amount g.db.add(self) - if show_polls: - for c in self.options: - body += f'
' + for c in self.options: + body += f'
' - if self.choices: - curr = self.total_choice_voted(v) - if curr: curr = " value=" + str(curr[0].comment_id) - else: curr = '' - body += f'' + if self.choices: + curr = self.total_choice_voted(v) + if curr: curr = " value=" + str(curr[0].comment_id) + else: curr = '' + body += f'' - for c in self.choices: - body += f'''
' + for c in self.choices: + body += f'''
' - for c in self.bet_options: - body += f'''
200) or self.total_bet_voted(v) or not v.can_gamble: body += " disabled " - body += f'''>" - if v and v.admin_level > 2: - body += f'''''' - body += "
" + for c in self.bet_options: + body += f'''
200) or self.total_bet_voted(v) or not v.can_gamble: body += " disabled " + body += f'''>" + if v and v.admin_level > 2: + body += f'''''' + body += "
" - if self.author.sig_html and (self.author_id == MOOSE_ID or (not self.ghost and not (v and v.sigs_disabled))): - body += f"
{self.author.sig_html}" + + if self.author.sig_html and (self.author_id == MOOSE_ID or (not self.ghost and not (v and v.sigs_disabled))): + body += f"
{self.author.sig_html}" return body diff --git a/files/classes/user.py b/files/classes/user.py index 5f8cc96df..682a8092f 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -480,7 +480,6 @@ class User(Base): @property @lazy def modaction_notifications_count(self): - if not self.admin_level: return 0 return g.db.query(Notification).join(Comment).filter( Notification.user_id == self.id, Notification.read == False, Comment.is_banned == False, Comment.deleted_utc == 0, @@ -490,7 +489,6 @@ class User(Base): @property @lazy def reddit_notifications_count(self): - if not self.can_view_offsitementions: return 0 return g.db.query(Notification).join(Comment).filter( Notification.user_id == self.id, Notification.read == False, Comment.is_banned == False, Comment.deleted_utc == 0, @@ -705,9 +703,6 @@ class User(Base): def saved_idlist(self, page=1): saved = [x[0] for x in g.db.query(SaveRelationship.submission_id).filter_by(user_id=self.id).all()] - - if not saved: return [] - posts = g.db.query(Submission.id).filter(Submission.id.in_(saved), Submission.is_banned == False, Submission.deleted_utc == 0) if self.admin_level < 2: @@ -719,9 +714,6 @@ class User(Base): def saved_comment_idlist(self, page=1): saved = [x[0] for x in g.db.query(CommentSaveRelationship.comment_id).filter_by(user_id=self.id).all()] - - if not saved: return [] - comments = g.db.query(Comment.id).filter(Comment.id.in_(saved), Comment.is_banned == False, Comment.deleted_utc == 0) if self.admin_level < 2: diff --git a/files/helpers/get.py b/files/helpers/get.py index 7629880da..f3504f8bf 100644 --- a/files/helpers/get.py +++ b/files/helpers/get.py @@ -120,8 +120,8 @@ def get_post(i, v=None, graceful=False): else: abort(404) if v: - vt = g.db.query(Vote.vote_type, Vote.submission_id).filter_by(user_id=v.id, submission_id=i).subquery() - + vt = g.db.query(Vote).filter_by( + user_id=v.id, submission_id=i).subquery() blocking = v.blocking.subquery() post = g.db.query( @@ -166,7 +166,7 @@ def get_posts(pids, v=None): return [] if v: - vt = g.db.query(Vote.vote_type, Vote.submission_id).filter( + vt = g.db.query(Vote).filter( Vote.submission_id.in_(pids), Vote.user_id==v.id ).subquery() @@ -228,7 +228,8 @@ def get_comment(i, v=None, graceful=False): ) ).first() - vt = g.db.query(CommentVote.vote_type).filter_by(user_id=v.id, comment_id=comment.id).one_or_none() + vts = g.db.query(CommentVote).filter_by(user_id=v.id, comment_id=comment.id) + vt = g.db.query(CommentVote).filter_by(user_id=v.id, comment_id=comment.id).one_or_none() comment.is_blocking = block and block.user_id == v.id comment.is_blocked = block and block.target_id == v.id comment.voted = vt.vote_type if vt else 0 @@ -241,7 +242,7 @@ def get_comments(cids, v=None, load_parent=False): if not cids: return [] if v: - votes = g.db.query(CommentVote.vote_type, CommentVote.comment_id).filter_by(user_id=v.id).subquery() + votes = g.db.query(CommentVote).filter_by(user_id=v.id).subquery() blocking = v.blocking.subquery() diff --git a/files/routes/comments.py b/files/routes/comments.py index 08a464259..8ba3d8985 100644 --- a/files/routes/comments.py +++ b/files/routes/comments.py @@ -117,7 +117,7 @@ def post_pid_comment_cid(cid, pid=None, anything=None, v=None, sub=None): sort=request.values.get("sort", defaultsortingcomments) if v: - votes = g.db.query(CommentVote.vote_type, CommentVote.comment_id).filter_by(user_id=v.id).subquery() + votes = g.db.query(CommentVote).filter_by(user_id=v.id).subquery() blocking = v.blocking.subquery() @@ -134,7 +134,8 @@ def post_pid_comment_cid(cid, pid=None, anything=None, v=None, sub=None): comments = comments.join(User, User.id == Comment.author_id).filter(User.shadowbanned == None) comments=comments.filter( - Comment.top_comment_id == c.top_comment_id + Comment.parent_submission == post.id, + Comment.author_id.notin_((AUTOPOLLER_ID, AUTOBETTER_ID, AUTOCHOICE_ID)) ).join( votes, votes.c.comment_id == Comment.id, diff --git a/files/routes/posts.py b/files/routes/posts.py index 1c7a15933..c84d6865d 100644 --- a/files/routes/posts.py +++ b/files/routes/posts.py @@ -147,7 +147,7 @@ def post_id(pid, anything=None, v=None, sub=None): if post.club and not (v and (v.paid_dues or v.id == post.author_id)): abort(403) if v: - votes = g.db.query(CommentVote.vote_type, CommentVote.comment_id).filter_by(user_id=v.id).subquery() + votes = g.db.query(CommentVote).filter_by(user_id=v.id).subquery() blocking = v.blocking.subquery() @@ -163,7 +163,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.filter(Comment.parent_submission == post.id).join( + comments=comments.filter(Comment.parent_submission == post.id, Comment.author_id.notin_((AUTOPOLLER_ID, AUTOBETTER_ID, AUTOCHOICE_ID))).join( votes, votes.c.comment_id == Comment.id, isouter=True @@ -187,7 +187,7 @@ def post_id(pid, anything=None, v=None, sub=None): pinned = [c[0] for c in comments.filter(Comment.stickied != None).all()] - comments = comments.filter(Comment.level == 1, Comment.stickied == None, Comment.author_id.notin_(poll_bots)) + comments = comments.filter(Comment.level == 1, Comment.stickied == None) comments = sort_comments(sort, comments) @@ -197,7 +197,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.author_id.notin_(poll_bots), Comment.level == 1, Comment.stickied == None) + comments = g.db.query(Comment).join(User, User.id == Comment.author_id).filter(User.shadowbanned == None, Comment.parent_submission == post.id, Comment.author_id.notin_((AUTOPOLLER_ID, AUTOBETTER_ID, AUTOCHOICE_ID)), Comment.level == 1, Comment.stickied == None) comments = sort_comments(sort, comments) @@ -259,7 +259,7 @@ def viewmore(v, pid, sort, offset): except: abort(400) if v: - votes = g.db.query(CommentVote.vote_type, CommentVote.comment_id).filter_by(user_id=v.id).subquery() + votes = g.db.query(CommentVote).filter_by(user_id=v.id).subquery() blocking = v.blocking.subquery() @@ -270,7 +270,7 @@ def viewmore(v, pid, sort, offset): votes.c.vote_type, blocking.c.target_id, blocked.c.target_id, - ).filter(Comment.parent_submission == pid, Comment.stickied == None, Comment.id.notin_(ids)) + ).filter(Comment.parent_submission == pid, Comment.author_id.notin_((AUTOPOLLER_ID, AUTOBETTER_ID, AUTOCHOICE_ID)), 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) @@ -297,7 +297,7 @@ def viewmore(v, pid, sort, offset): comment.is_blocked = c[3] or 0 output.append(comment) - comments = comments.filter(Comment.level == 1, Comment.author_id.notin_(poll_bots)) + comments = comments.filter(Comment.level == 1) comments = sort_comments(sort, comments) @@ -305,7 +305,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.author_id.notin_(poll_bots), Comment.level == 1, Comment.stickied == None, Comment.id.notin_(ids)) + comments = g.db.query(Comment).join(User, User.id == Comment.author_id).filter(User.shadowbanned == None, Comment.parent_submission == pid, Comment.author_id.notin_((AUTOPOLLER_ID, AUTOBETTER_ID, AUTOCHOICE_ID)), Comment.level == 1, Comment.stickied == None, Comment.id.notin_(ids)) comments = sort_comments(sort, comments) @@ -346,7 +346,7 @@ def morecomments(v, cid): tcid = g.db.query(Comment.top_comment_id).filter_by(id=cid).one_or_none()[0] if v: - votes = g.db.query(CommentVote.vote_type, CommentVote.comment_id).filter_by(user_id=v.id).subquery() + votes = g.db.query(CommentVote).filter_by(user_id=v.id).subquery() blocking = v.blocking.subquery() diff --git a/files/templates/comments.html b/files/templates/comments.html index aa19b2b9a..3feb22d82 100644 --- a/files/templates/comments.html +++ b/files/templates/comments.html @@ -877,7 +877,7 @@ lastCount = comments['{{p.id}}'] if (lastCount) { - {% for c in p.replies %} + {% for c in p.comments %} {% if not (v and v.id==c.author_id) and not c.voted %} if ({{c.created_utc*1000}} > lastCount.t) try {document.getElementById("comment-{{c.id}}-only").classList.add('unread')} @@ -908,7 +908,7 @@ lastCount = comments['{{p.id}}'] if (lastCount) { - {% for c in p.replies %} + {% for c in p.comments %} {% if not (v and v.id==c.author_id) and not c.voted %} if ({{c.created_utc*1000}} > lastCount.t) try {document.getElementById("comment-{{c.id}}-only").classList.add('unread')} diff --git a/files/templates/submission.html b/files/templates/submission.html index 1d71353a4..7d4ebdef4 100644 --- a/files/templates/submission.html +++ b/files/templates/submission.html @@ -733,6 +733,10 @@ {% if p.private %}Draft{% endif %} {% if p.active_flags(v) %}{{p.active_flags(v)}} Report{{ help.plural(p.active_flags(v)) }}{% endif %} + {% if not p.author %} + {{p.print()}} + {% endif %} + {% if p.ghost %} 👻 {% else %} @@ -791,7 +795,7 @@ {% if p.realurl(v) %} {% if not p.embed_url and not p.is_image and not p.is_video and not p.is_audio %} -
+
{{p.domain|truncate(30, True)}}
@@ -841,7 +845,7 @@

 							{% endif %}
-							{{p.realbody(v, show_polls=True) | safe}}
+							{{p.realbody(v) | safe}}
 
 							{% if p.is_banned and p.ban_reason %}
 								
removed by @{{p.ban_reason}}
@@ -1123,7 +1127,7 @@ lastCount = comments['{{p.id}}'] if (lastCount) { - {% for c in p.replies %} + {% for c in p.comments %} {% if not (v and v.id==c.author_id) and not c.voted %} if ({{c.created_utc*1000}} > lastCount.t) try {document.getElementById("comment-{{c.id}}-only").classList.add('unread')} diff --git a/files/templates/submission_banned.html b/files/templates/submission_banned.html index 60c7a31cd..18bd934f2 100644 --- a/files/templates/submission_banned.html +++ b/files/templates/submission_banned.html @@ -94,7 +94,7 @@ lastCount = comments['{{p.id}}'] if (lastCount) { - {% for c in p.replies %} + {% for c in p.comments %} {% if not (v and v.id==c.author_id) and not c.voted %} if ({{c.created_utc*1000}} > lastCount.t) try {document.getElementById("comment-{{c.id}}-only").classList.add('unread')}