remotes/1693045480750635534/spooky-22
Aevann1 2021-11-18 16:21:19 +02:00
parent 4a4f88dbc4
commit 65d2090cd8
14 changed files with 80 additions and 78 deletions

View File

@ -73,7 +73,7 @@ r=redis.Redis(host=environ.get("REDIS_URL", "redis://127.0.0.1"), decode_respon
limiter = Limiter(
app,
key_func=get_ipaddr,
default_limits=["50/minute"],
default_limits=["3/second;30/minute;100/hour"],
headers_enabled=True,
strategy="fixed-window"
)

View File

@ -7,7 +7,7 @@ from sqlalchemy import *
from sqlalchemy.orm import relationship
from files.__main__ import Base
from files.classes.votes import CommentVote
from files.helpers.const import AUTOPOLLER_ACCOUNT, censor_slurs
from files.helpers.const import AUTOPOLLER_ID, censor_slurs
from files.helpers.lazy import lazy
from .flags import CommentFlag
from random import randint
@ -80,7 +80,7 @@ class Comment(Base):
@property
@lazy
def options(self):
return [x for x in self.child_comments if x.author_id == AUTOPOLLER_ACCOUNT]
return [x for x in self.child_comments if x.author_id == AUTOPOLLER_ID]
def total_poll_voted(self, v):
if v:
@ -185,7 +185,7 @@ class Comment(Base):
def replies(self):
r = self.__dict__.get("replies", None)
if r: r = [x for x in r if not x.author.shadowbanned]
if not r and r != []: r = sorted([x for x in self.child_comments if not x.author.shadowbanned and x.author_id != AUTOPOLLER_ACCOUNT], key=lambda x: x.score, reverse=True)
if not r and r != []: r = sorted([x for x in self.child_comments if not x.author.shadowbanned and x.author_id != AUTOPOLLER_ID], key=lambda x: x.score, reverse=True)
return r
@replies.setter
@ -203,7 +203,7 @@ class Comment(Base):
@property
def replies3(self):
r = self.__dict__.get("replies", None)
if not r and r != []: r = sorted([x for x in self.child_comments if x.author_id != AUTOPOLLER_ACCOUNT], key=lambda x: x.score, reverse=True)
if not r and r != []: r = sorted([x for x in self.child_comments if x.author_id != AUTOPOLLER_ID], key=lambda x: x.score, reverse=True)
return r
@property

View File

@ -7,7 +7,7 @@ from flask import render_template
from sqlalchemy import *
from sqlalchemy.orm import relationship
from files.__main__ import Base
from files.helpers.const import AUTOPOLLER_ACCOUNT, censor_slurs, TROLLTITLES
from files.helpers.const import AUTOPOLLER_ID, censor_slurs, TROLLTITLES
from files.helpers.lazy import lazy
from .flags import Flag
from .comment import Comment
@ -80,7 +80,7 @@ class Submission(Base):
@property
@lazy
def options(self):
return g.db.query(Comment).filter_by(parent_submission = self.id, author_id = AUTOPOLLER_ACCOUNT, level=1)
return g.db.query(Comment).filter_by(parent_submission = self.id, author_id = AUTOPOLLER_ID, level=1)
def total_poll_voted(self, v):
if v:

View File

@ -355,7 +355,7 @@ class User(Base):
@property
@lazy
def post_notifications_count(self):
return g.db.query(Notification.id).join(Comment).filter(Notification.user_id == self.id, Notification.read == False, Comment.author_id == AUTOJANNY_ACCOUNT).count()
return g.db.query(Notification.id).join(Comment).filter(Notification.user_id == self.id, Notification.read == False, Comment.author_id == AUTOJANNY_ID).count()
@property
@ -463,7 +463,7 @@ class User(Base):
self.profileurl = None
if self.discord_id: remove_user(self)
self.is_banned = admin.id if admin else AUTOJANNY_ACCOUNT
self.is_banned = admin.id if admin else AUTOJANNY_ID
if reason: self.ban_reason = reason
g.db.add(self)

View File

@ -14,8 +14,8 @@ def send_notification(uid, text, autojanny=False):
text_html = sanitize(text_html)
if autojanny: author_id = AUTOJANNY_ACCOUNT
else: author_id = NOTIFICATIONS_ACCOUNT
if autojanny: author_id = AUTOJANNY_ID
else: author_id = NOTIFICATIONS_ID
new_comment = Comment(author_id=author_id,
parent_submission=None,
@ -38,7 +38,7 @@ def send_follow_notif(vid, user, text):
text_html = CustomRenderer().render(mistletoe.Document(text))
text_html = sanitize(text_html)
new_comment = Comment(author_id=NOTIFICATIONS_ACCOUNT,
new_comment = Comment(author_id=NOTIFICATIONS_ID,
parent_submission=None,
distinguish_level=6,
body=text,
@ -57,7 +57,7 @@ def send_unfollow_notif(vid, user, text):
text_html = CustomRenderer().render(mistletoe.Document(text))
text_html = sanitize(text_html)
new_comment = Comment(author_id=NOTIFICATIONS_ACCOUNT,
new_comment = Comment(author_id=NOTIFICATIONS_ID,
parent_submission=None,
distinguish_level=6,
body=text,
@ -76,7 +76,7 @@ def send_block_notif(vid, user, text):
text_html = CustomRenderer().render(mistletoe.Document(text))
text_html = sanitize(text_html)
new_comment = Comment(author_id=NOTIFICATIONS_ACCOUNT,
new_comment = Comment(author_id=NOTIFICATIONS_ID,
parent_submission=None,
distinguish_level=6,
body=text,
@ -95,7 +95,7 @@ def send_unblock_notif(vid, user, text):
text_html = CustomRenderer().render(mistletoe.Document(text))
text_html = sanitize(text_html)
new_comment = Comment(author_id=NOTIFICATIONS_ACCOUNT,
new_comment = Comment(author_id=NOTIFICATIONS_ID,
parent_submission=None,
distinguish_level=6,
body=text,

File diff suppressed because one or more lines are too long

View File

@ -997,14 +997,14 @@ def api_sticky_post(post_id, v):
if post.stickied:
if v.id != post.author_id:
message = f"@{v.username} has pinned your [post](/post/{post_id})!"
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ACCOUNT, Comment.body == message).first()
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ID, Comment.body == message).first()
if not existing: send_notification(post.author_id, message)
g.db.commit()
return {"message": "Post pinned!"}
else:
if v.id != post.author_id:
message = f"@{v.username} has unpinned your [post](/post/{post_id})!"
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ACCOUNT, Comment.body == message).first()
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ID, Comment.body == message).first()
if not existing: send_notification(post.author_id, message)
g.db.commit()
return {"message": "Post unpinned!"}

View File

@ -426,7 +426,7 @@ def award_post(pid, v):
author.ban_evade = 0
send_notification(author.id, f"You have been unbanned!")
elif kind == "grass":
author.is_banned = AUTOJANNY_ACCOUNT
author.is_banned = AUTOJANNY_ID
author.ban_reason = f"grass award used by @{v.username} on /post/{post.id}"
link = f"[this post]({post.permalink})"
send_notification(author.id, f"Your account has been suspended permanently for {link}. You must [provide the admins](/contact) a timestamped picture of you touching grass to get unbanned!")
@ -548,7 +548,7 @@ def award_comment(cid, v):
author.ban_evade = 0
send_notification(author.id, f"You have been unbanned!")
elif kind == "grass":
author.is_banned = AUTOJANNY_ACCOUNT
author.is_banned = AUTOJANNY_ID
author.ban_reason = f"grass award used by @{v.username} on /comment/{c.id}"
link = f"[this comment]({c.permalink})"
send_notification(author.id, f"Your account has been suspended permanently for {link}. You must [provide the admins](/contact) a timestamped picture of you touching grass to get unbanned!")

View File

@ -96,7 +96,7 @@ def post_pid_comment_cid(cid, pid=None, anything=None, v=None):
comments=comments.filter(
Comment.parent_submission == post.id,
Comment.author_id != AUTOPOLLER_ACCOUNT
Comment.author_id != AUTOPOLLER_ID
).join(
votes,
votes.c.comment_id == Comment.id,
@ -241,7 +241,7 @@ def api_comment(v):
comment.ban_reason = "AutoJanny"
g.db.add(comment)
ma=ModAction(
user_id=AUTOJANNY_ACCOUNT,
user_id=AUTOJANNY_ID,
target_comment_id=comment.id,
kind="ban_comment",
_note="spam"
@ -268,7 +268,7 @@ def api_comment(v):
g.db.flush()
for option in options:
c_option = Comment(author_id=AUTOPOLLER_ACCOUNT,
c_option = Comment(author_id=AUTOPOLLER_ID,
parent_submission=parent_submission,
parent_comment_id=c.id,
level=level+1,
@ -297,7 +297,7 @@ def api_comment(v):
body_based_html = sanitize(body_md)
c_based = Comment(author_id=BASEDBOT_ACCOUNT,
c_based = Comment(author_id=BASEDBOT_ID,
parent_submission=parent_submission,
distinguish_level=6,
parent_comment_id=c.id,
@ -328,7 +328,7 @@ def api_comment(v):
c_jannied = Comment(author_id=AUTOJANNY_ACCOUNT,
c_jannied = Comment(author_id=AUTOJANNY_ID,
parent_submission=parent_submission,
distinguish_level=6,
parent_comment_id=c.id,
@ -361,7 +361,7 @@ def api_comment(v):
c_jannied = Comment(author_id=AUTOJANNY_ACCOUNT,
c_jannied = Comment(author_id=AUTOJANNY_ID,
parent_submission=parent_submission,
distinguish_level=6,
parent_comment_id=c.id,
@ -396,7 +396,7 @@ def api_comment(v):
c2 = Comment(author_id=LONGPOSTBOT_ACCOUNT,
c2 = Comment(author_id=LONGPOSTBOT_ID,
parent_submission=parent_submission,
parent_comment_id=c.id,
level=level+1,
@ -406,7 +406,7 @@ def api_comment(v):
g.db.add(c2)
longpostbot = g.db.query(User).filter_by(id = LONGPOSTBOT_ACCOUNT).first()
longpostbot = g.db.query(User).filter_by(id = LONGPOSTBOT_ID).first()
longpostbot.comment_count += 1
longpostbot.coins += 1
g.db.add(longpostbot)
@ -433,7 +433,7 @@ def api_comment(v):
c2 = Comment(author_id=ZOZBOT_ACCOUNT,
c2 = Comment(author_id=ZOZBOT_ID,
parent_submission=parent_submission,
parent_comment_id=c.id,
level=level+1,
@ -459,7 +459,7 @@ def api_comment(v):
c3 = Comment(author_id=ZOZBOT_ACCOUNT,
c3 = Comment(author_id=ZOZBOT_ID,
parent_submission=parent_submission,
parent_comment_id=c2.id,
level=level+2,
@ -481,7 +481,7 @@ def api_comment(v):
body_html2 = sanitize(body_md)
c4 = Comment(author_id=ZOZBOT_ACCOUNT,
c4 = Comment(author_id=ZOZBOT_ID,
parent_submission=parent_submission,
parent_comment_id=c3.id,
level=level+3,
@ -491,7 +491,7 @@ def api_comment(v):
g.db.add(c4)
zozbot = g.db.query(User).filter_by(id = ZOZBOT_ACCOUNT).first()
zozbot = g.db.query(User).filter_by(id = ZOZBOT_ID).first()
zozbot.comment_count += 3
zozbot.coins += 3
g.db.add(zozbot)
@ -512,7 +512,7 @@ def api_comment(v):
for x in g.db.query(Subscription.user_id).filter_by(submission_id=c.parent_submission).all(): notify_users.add(x[0])
if parent.author.id != v.id: notify_users.add(parent.author.id)
if parent.author.id not in [v.id, BASEDBOT_ID, AUTOJANNY_ID, SNAPPY_ID, LONGPOSTBOT_ID, ZOZBOT_ID, AUTOPOLLER_ID]: notify_users.add(parent.author.id)
soup = BeautifulSoup(body_html, features="html.parser")
mentions = soup.find_all("a", href=re.compile("^/@(\w+)"))
@ -546,7 +546,7 @@ def api_comment(v):
'notification': {
'title': f'New reply by @{v.username}',
'body': c.body,
'deep_link': f'http://{site}{c.permalink}?context=9&read=true#context',
'deep_link': f'http://{site}/comment/{c.id}?context=9&read=true#context',
},
},
},
@ -696,7 +696,7 @@ def edit_comment(cid, v):
c_jannied = Comment(author_id=AUTOJANNY_ACCOUNT,
c_jannied = Comment(author_id=AUTOJANNY_ID,
parent_submission=c.parent_submission,
distinguish_level=6,
parent_comment_id=c.id,
@ -730,7 +730,7 @@ def edit_comment(cid, v):
c_jannied = Comment(author_id=AUTOJANNY_ACCOUNT,
c_jannied = Comment(author_id=AUTOJANNY_ID,
parent_submission=c.parent_submission,
distinguish_level=6,
parent_comment_id=c.id,
@ -865,14 +865,14 @@ def toggle_pin_comment(cid, v):
if comment.is_pinned:
if v.id != comment.author_id:
message = f"@{v.username} has pinned your [comment]({comment.permalink})!"
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ACCOUNT, Comment.body == message).first()
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ID, Comment.body == message).first()
if not existing: send_notification(comment.author_id, message)
g.db.commit()
return {"message": "Comment pinned!"}
else:
if v.id != comment.author_id:
message = f"@{v.username} has unpinned your [comment]({comment.permalink})!"
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ACCOUNT, Comment.body == message).first()
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ID, Comment.body == message).first()
if not existing: send_notification(comment.author_id, message)
g.db.commit()
return {"message": "Comment unpinned!"}

View File

@ -37,7 +37,7 @@ def notifications(v):
next_exists = (len(comments) > 25)
comments = comments[:25]
elif posts:
notifications = v.notifications.join(Notification.comment).filter(Comment.author_id == AUTOJANNY_ACCOUNT).order_by(Notification.id.desc()).offset(25 * (page - 1)).limit(101).all()
notifications = v.notifications.join(Notification.comment).filter(Comment.author_id == AUTOJANNY_ID).order_by(Notification.id.desc()).offset(25 * (page - 1)).limit(101).all()
listing = []
@ -58,7 +58,7 @@ def notifications(v):
notifications = v.notifications.join(Notification.comment).filter(
Comment.is_banned == False,
Comment.deleted_utc == 0,
Comment.author_id != AUTOJANNY_ACCOUNT,
Comment.author_id != AUTOJANNY_ID,
).order_by(Notification.id.desc()).offset(25 * (page - 1)).limit(26).all()
next_exists = (len(notifications) > 25)

View File

@ -49,7 +49,7 @@ def request_api_keys(v):
g.db.add(new_app)
send_admin(NOTIFICATIONS_ACCOUNT, f"{v.username} has requested API keys for `{request.values.get('name')}`. You can approve or deny the request [here](/admin/apps).")
send_admin(NOTIFICATIONS_ID, f"{v.username} has requested API keys for `{request.values.get('name')}`. You can approve or deny the request [here](/admin/apps).")
g.db.commit()

View File

@ -139,7 +139,7 @@ def post_id(pid, anything=None, v=None):
comments=comments.filter(
Comment.parent_submission == post.id,
Comment.author_id != AUTOPOLLER_ACCOUNT,
Comment.author_id != AUTOPOLLER_ID,
).join(
votes,
votes.c.comment_id == Comment.id,
@ -176,7 +176,7 @@ def post_id(pid, anything=None, v=None):
post.replies = [x for x in output if x.is_pinned] + [x for x in output if x.level == 1 and not x.is_pinned]
else:
comments = g.db.query(Comment).join(User, User.id == Comment.author_id).filter(User.shadowbanned == None, Comment.parent_submission == post.id, Comment.author_id != AUTOPOLLER_ACCOUNT)
comments = g.db.query(Comment).join(User, User.id == Comment.author_id).filter(User.shadowbanned == None, Comment.parent_submission == post.id, Comment.author_id != AUTOPOLLER_ID)
if sort == "new":
comments = comments.order_by(Comment.created_utc.desc())
@ -271,7 +271,7 @@ def edit_post(pid, v):
body_jannied_html = sanitize(body_md)
c_jannied = Comment(author_id=AUTOJANNY_ACCOUNT,
c_jannied = Comment(author_id=AUTOJANNY_ID,
parent_submission=p.id,
level=1,
over_18=False,
@ -303,7 +303,7 @@ def edit_post(pid, v):
body_jannied_html = sanitize(body_md)
c_jannied = Comment(author_id=AUTOJANNY_ACCOUNT,
c_jannied = Comment(author_id=AUTOJANNY_ID,
parent_submission=p.id,
level=1,
over_18=False,
@ -338,7 +338,7 @@ def edit_post(pid, v):
if ('idio3' in f'{body_html}{title}'.lower() or 'idio ' in f'{body_html}{title}'.lower()) and 30 not in notify_users: notify_users.add(30)
for x in notify_users:
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ACCOUNT, Comment.body == message, Comment.notifiedto == x).first()
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ID, Comment.body == message, Comment.notifiedto == x).first()
if not existing: send_notification(x, message)
@ -650,7 +650,7 @@ def submit_post(v):
post.ban_reason = "AutoJanny"
g.db.add(post)
ma=ModAction(
user_id=AUTOJANNY_ACCOUNT,
user_id=AUTOJANNY_ID,
target_submission_id=post.id,
kind="ban_post",
_note="spam"
@ -713,7 +713,7 @@ def submit_post(v):
g.db.flush()
for option in options:
c = Comment(author_id=AUTOPOLLER_ACCOUNT,
c = Comment(author_id=AUTOPOLLER_ID,
parent_submission=new_post.id,
level=1,
body_html=filter_title(option),
@ -812,7 +812,7 @@ def submit_post(v):
body_jannied_html = sanitize(body_md)
c_jannied = Comment(author_id=AUTOJANNY_ACCOUNT,
c_jannied = Comment(author_id=AUTOJANNY_ID,
parent_submission=new_post.id,
level=1,
over_18=False,
@ -846,7 +846,7 @@ def submit_post(v):
c_jannied = Comment(author_id=AUTOJANNY_ACCOUNT,
c_jannied = Comment(author_id=AUTOJANNY_ID,
parent_submission=new_post.id,
level=1,
over_18=False,
@ -884,7 +884,7 @@ def submit_post(v):
if new_post.url:
if new_post.url.startswith('https://old.reddit.com/r/'):
rev = new_post.url.replace('https://old.reddit.com/', '')
rev = "* [reveddit.com](https://reveddit.com/{rev})\n"
rev = f"* [reveddit.com](https://reveddit.com/{rev})\n"
else: rev = ''
body += f"Snapshots:\n\n{rev}* [archive.org](https://web.archive.org/{new_post.url})\n* [archive.ph](https://archive.ph/?url={quote(new_post.url)}&run=1) (click to archive)\n\n"
gevent.spawn(archiveorg, new_post.url)
@ -898,7 +898,7 @@ def submit_post(v):
if "Snapshots:\n\n" not in body: body += "Snapshots:\n\n"
body += f'**[{title}]({href})**:\n\n'
body += f'* [reveddit.com](https://reveddit.com/{href})\n'
body += f'* [reveddit.com](https://reveddit.com/{href.replace("https://old.reddit.com/", "")})\n'
body += f'* [archive.org](https://web.archive.org/{href})\n'
body += f'* [archive.ph](https://archive.ph/?url={quote(href)}&run=1) (click to archive)\n\n'
gevent.spawn(archiveorg, href)
@ -907,7 +907,7 @@ def submit_post(v):
body_html = sanitize(body_md)
if len(body_html) < 20000:
c = Comment(author_id=SNAPPY_ACCOUNT,
c = Comment(author_id=SNAPPY_ID,
distinguish_level=6,
parent_submission=new_post.id,
level=1,
@ -919,7 +919,7 @@ def submit_post(v):
g.db.add(c)
snappy = g.db.query(User).filter_by(id = SNAPPY_ACCOUNT).first()
snappy = g.db.query(User).filter_by(id = SNAPPY_ID).first()
snappy.comment_count += 1
snappy.coins += 1
g.db.add(snappy)

View File

@ -240,7 +240,7 @@ def settings_profile_post(v):
for x in notify_users:
message = f"@{v.username} has added you to their friends list!"
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ACCOUNT, Comment.body == message, Comment.notifiedto == x).first()
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ID, Comment.body == message, Comment.notifiedto == x).first()
if not existing: send_notification(x, message)
v.friends = friends[:500]
@ -285,7 +285,7 @@ def settings_profile_post(v):
for x in notify_users:
message = f"@{v.username} has added you to their enemies list!"
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ACCOUNT, Comment.body == message, Comment.notifiedto == x).first()
existing = g.db.query(Comment.id).filter(Comment.author_id == NOTIFICATIONS_ID, Comment.body == message, Comment.notifiedto == x).first()
if not existing: send_notification(x, message)
v.enemies = enemies[:500]
@ -825,7 +825,7 @@ def settings_block_user(v):
if v.has_block(user):
return {"error": f"You have already blocked @{user.username}."}, 409
if user.id == NOTIFICATIONS_ACCOUNT:
if user.id == NOTIFICATIONS_ID:
return {"error": "You can't block this user."}, 409
new_block = UserBlock(user_id=v.id,

View File

@ -255,7 +255,7 @@
{% else %}
<span class="font-weight-bold"><a href="{{c.post.permalink}}">{{c.post.realtitle(v) | safe}}</a></span>
{% endif %}
{% elif c.author_id==NOTIFICATIONS_ACCOUNT or c.author_id==AUTOJANNY_ACCOUNT %}
{% elif c.author_id==NOTIFICATIONS_ID or c.author_id==AUTOJANNY_ID %}
<span class="font-weight-bold">{{'SITE_NAME' | app_config}} Notification</span>
{% else %}
{% if c.sentto == 0 %}
@ -347,7 +347,7 @@
{% endif %}
{% if not c.parent_submission and c.author_id!=NOTIFICATIONS_ACCOUNT and c.author_id!=AUTOJANNY_ACCOUNT and c.author_id!=v.id %}
{% if not c.parent_submission and c.author_id!=NOTIFICATIONS_ID and c.author_id!=AUTOJANNY_ID and c.author_id!=v.id %}
<a class="btn btn-primary" href="javascript:void(0)" onclick="document.getElementById('reply-m-{{c.id}}').classList.toggle('d-none')">Reply</a>
<pre></pre>
<div id="reply-m-{{c.id}}" class="d-none">
@ -579,7 +579,7 @@
</div>
{% elif replies %}
<div id="morecomment-{{c.id}}" class="mt-2 more-comments text-small">
<a {% if v %}href="{{c.shortlink}}#context"{% else %}href="/logged_out{{c.shortlink}}#context"{% endif %}>More comments <i class="fas fa-long-arrow-right ml-1"></i></a>
<a {% if v %}href="{{c.shortlink}}"{% else %}href="/logged_out{{c.shortlink}}"{% endif %}>More comments <i class="fas fa-long-arrow-right ml-1"></i></a>
</div>
{% endif %}
{% endif %}