fv
This commit is contained in:
parent
698a67c684
commit
00a59e869f
17 changed files with 75 additions and 71 deletions
Binary file not shown.
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
|
@ -281,7 +281,7 @@ class Comment(Base):
|
||||||
'level': self.level,
|
'level': self.level,
|
||||||
'parent': self.parent_fullname
|
'parent': self.parent_fullname
|
||||||
}
|
}
|
||||||
elif self.deleted_utc > 0:
|
elif self.deleted_utc:
|
||||||
data= {'deleted_utc': self.deleted_utc,
|
data= {'deleted_utc': self.deleted_utc,
|
||||||
'id': self.id,
|
'id': self.id,
|
||||||
'post': self.post.id if self.post else 0,
|
'post': self.post.id if self.post else 0,
|
||||||
|
@ -305,7 +305,7 @@ class Comment(Base):
|
||||||
|
|
||||||
data=self.json_core
|
data=self.json_core
|
||||||
|
|
||||||
if self.deleted_utc > 0 or self.is_banned:
|
if self.deleted_utc or self.is_banned:
|
||||||
return data
|
return data
|
||||||
|
|
||||||
data["author"]=self.author.json_core
|
data["author"]=self.author.json_core
|
||||||
|
|
|
@ -317,7 +317,7 @@ class Submission(Base):
|
||||||
|
|
||||||
data=self.json_core
|
data=self.json_core
|
||||||
|
|
||||||
if self.deleted_utc > 0 or self.is_banned:
|
if self.deleted_utc or self.is_banned:
|
||||||
return data
|
return data
|
||||||
|
|
||||||
data["author"]=self.author.json_core
|
data["author"]=self.author.json_core
|
||||||
|
|
|
@ -530,7 +530,7 @@ class User(Base):
|
||||||
self.bannerurl = None
|
self.bannerurl = None
|
||||||
|
|
||||||
def ban(self, admin=None, reason=None, days=0):
|
def ban(self, admin=None, reason=None, days=0):
|
||||||
if days > 0:
|
if days:
|
||||||
ban_time = int(time.time()) + (days * 86400)
|
ban_time = int(time.time()) + (days * 86400)
|
||||||
self.unban_utc = ban_time
|
self.unban_utc = ban_time
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -243,8 +243,8 @@ def sanitize(sanitized, noimages=False, alert=False):
|
||||||
for i in re.finditer('<p>(https:.*?\.(mp4|webm|mov))</p>', sanitized):
|
for i in re.finditer('<p>(https:.*?\.(mp4|webm|mov))</p>', sanitized):
|
||||||
sanitized = sanitized.replace(i.group(0), f'<p><video controls preload="none" class="embedvid"><source src="{i.group(1)}" type="video/{i.group(2)}"></video>')
|
sanitized = sanitized.replace(i.group(0), f'<p><video controls preload="none" class="embedvid"><source src="{i.group(1)}" type="video/{i.group(2)}"></video>')
|
||||||
|
|
||||||
for rd in ["https://reddit.com/", "https://new.reddit.com/", "https://www.reddit.com/", "https://redd.it/"]:
|
for rd in ["://reddit.com", "://new.reddit.com", "://www.reddit.com", "://redd.it", "://libredd.it"]:
|
||||||
sanitized = sanitized.replace(rd, "https://old.reddit.com/")
|
sanitized = sanitized.replace(rd, "://old.reddit.com")
|
||||||
|
|
||||||
sanitized = sanitized.replace("old.reddit.com/gallery", "new.reddit.com/gallery")
|
sanitized = sanitized.replace("old.reddit.com/gallery", "new.reddit.com/gallery")
|
||||||
sanitized = re.sub(' (https:\/\/[^ <>]*)', r' <a target="_blank" rel="nofollow noopener noreferrer" href="\1">\1</a>', sanitized)
|
sanitized = re.sub(' (https:\/\/[^ <>]*)', r' <a target="_blank" rel="nofollow noopener noreferrer" href="\1">\1</a>', sanitized)
|
||||||
|
|
|
@ -207,7 +207,7 @@ def monthly(v):
|
||||||
|
|
||||||
emails = [x['email'] for x in requests.get(f'https://api.gumroad.com/v2/products/{GUMROAD_ID}/subscribers', data=data, timeout=5).json()["subscribers"]]
|
emails = [x['email'] for x in requests.get(f'https://api.gumroad.com/v2/products/{GUMROAD_ID}/subscribers', data=data, timeout=5).json()["subscribers"]]
|
||||||
|
|
||||||
for u in g.db.query(User).filter(User.patron > 0).all():
|
for u in g.db.query(User).filter(User.patron).all():
|
||||||
if u.patron == 5 or u.email and u.email.lower() in emails or u.id == 1379:
|
if u.patron == 5 or u.email and u.email.lower() in emails or u.id == 1379:
|
||||||
if u.patron == 1: procoins = 2500
|
if u.patron == 1: procoins = 2500
|
||||||
elif u.patron == 2: procoins = 5000
|
elif u.patron == 2: procoins = 5000
|
||||||
|
@ -716,7 +716,7 @@ def agendaposter(user_id, v):
|
||||||
user.agendaposter_expires_utc = expiry
|
user.agendaposter_expires_utc = expiry
|
||||||
g.db.add(user)
|
g.db.add(user)
|
||||||
for alt in user.alts:
|
for alt in user.alts:
|
||||||
if alt.admin_level > 0: break
|
if alt.admin_level: break
|
||||||
alt.agendaposter = user.agendaposter
|
alt.agendaposter = user.agendaposter
|
||||||
alt.agendaposter_expires_utc = expiry
|
alt.agendaposter_expires_utc = expiry
|
||||||
g.db.add(alt)
|
g.db.add(alt)
|
||||||
|
@ -763,7 +763,7 @@ def shadowban(user_id, v):
|
||||||
user.shadowbanned = v.username
|
user.shadowbanned = v.username
|
||||||
g.db.add(user)
|
g.db.add(user)
|
||||||
for alt in user.alts:
|
for alt in user.alts:
|
||||||
if alt.admin_level > 0: break
|
if alt.admin_level: break
|
||||||
alt.shadowbanned = v.username
|
alt.shadowbanned = v.username
|
||||||
g.db.add(alt)
|
g.db.add(alt)
|
||||||
ma = ModAction(
|
ma = ModAction(
|
||||||
|
@ -894,10 +894,10 @@ def ban_user(user_id, v):
|
||||||
|
|
||||||
if request.values.get("alts"):
|
if request.values.get("alts"):
|
||||||
for x in user.alts:
|
for x in user.alts:
|
||||||
if x.admin_level > 0: break
|
if x.admin_level: break
|
||||||
user.ban(admin=v, reason=reason, days=days)
|
user.ban(admin=v, reason=reason, days=days)
|
||||||
|
|
||||||
if days > 0:
|
if days:
|
||||||
if message: text = f"Your account has been suspended for {days} days for the following reason:\n\n> {message}"
|
if message: text = f"Your account has been suspended for {days} days for the following reason:\n\n> {message}"
|
||||||
else: text = f"Your account has been suspended for {days} days."
|
else: text = f"Your account has been suspended for {days} days."
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -223,7 +223,7 @@ def award_post(pid, v):
|
||||||
if not author.is_suspended:
|
if not author.is_suspended:
|
||||||
author.ban(reason=f"1-Day ban award used by @{v.username} on /post/{post.id}", days=1)
|
author.ban(reason=f"1-Day ban award used by @{v.username} on /post/{post.id}", days=1)
|
||||||
send_repeatable_notification(author.id, f"Your account has been suspended for a day for {link}. It sucked and you should feel bad.")
|
send_repeatable_notification(author.id, f"Your account has been suspended for a day for {link}. It sucked and you should feel bad.")
|
||||||
elif author.unban_utc > 0:
|
elif author.unban_utc:
|
||||||
author.unban_utc += 86400
|
author.unban_utc += 86400
|
||||||
send_repeatable_notification(author.id, f"Your account has been suspended for yet another day for {link}. Seriously man?")
|
send_repeatable_notification(author.id, f"Your account has been suspended for yet another day for {link}. Seriously man?")
|
||||||
elif kind == "unban":
|
elif kind == "unban":
|
||||||
|
@ -410,7 +410,7 @@ def award_comment(cid, v):
|
||||||
if not author.is_suspended:
|
if not author.is_suspended:
|
||||||
author.ban(reason=f"1-Day ban award used by @{v.username} on /comment/{c.id}", days=1)
|
author.ban(reason=f"1-Day ban award used by @{v.username} on /comment/{c.id}", days=1)
|
||||||
send_repeatable_notification(author.id, f"Your account has been suspended for a day for {link}. It sucked and you should feel bad.")
|
send_repeatable_notification(author.id, f"Your account has been suspended for a day for {link}. It sucked and you should feel bad.")
|
||||||
elif author.unban_utc > 0:
|
elif author.unban_utc:
|
||||||
author.unban_utc += 86400
|
author.unban_utc += 86400
|
||||||
send_repeatable_notification(author.id, f"Your account has been suspended for yet another day for {link}. Seriously man?")
|
send_repeatable_notification(author.id, f"Your account has been suspended for yet another day for {link}. Seriously man?")
|
||||||
elif kind == "unban":
|
elif kind == "unban":
|
||||||
|
@ -580,7 +580,7 @@ def admin_userawards_post(v):
|
||||||
|
|
||||||
if int(value) > 10: abort(403)
|
if int(value) > 10: abort(403)
|
||||||
|
|
||||||
if int(value) > 0: notify_awards[key] = int(value)
|
if int(value): notify_awards[key] = int(value)
|
||||||
|
|
||||||
for x in range(int(value)):
|
for x in range(int(value)):
|
||||||
thing += 1
|
thing += 1
|
||||||
|
|
|
@ -72,7 +72,7 @@ def post_pid_comment_cid(cid, pid=None, anything=None, v=None):
|
||||||
except: context = 0
|
except: context = 0
|
||||||
comment_info = comment
|
comment_info = comment
|
||||||
c = comment
|
c = comment
|
||||||
while context > 0 and c.level > 1:
|
while context and c.level > 1:
|
||||||
c = c.parent_comment
|
c = c.parent_comment
|
||||||
context -= 1
|
context -= 1
|
||||||
top_comment = c
|
top_comment = c
|
||||||
|
@ -213,7 +213,7 @@ def api_comment(v):
|
||||||
|
|
||||||
body_html = sanitize(body)
|
body_html = sanitize(body)
|
||||||
|
|
||||||
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', body_html))) > 0: return {"error":"You can only type marseys!"}, 403
|
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', body_html))): return {"error":"You can only type marseys!"}, 403
|
||||||
|
|
||||||
if v.longpost:
|
if v.longpost:
|
||||||
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
||||||
|
@ -591,7 +591,7 @@ def edit_comment(cid, v):
|
||||||
|
|
||||||
body_html = sanitize(body)
|
body_html = sanitize(body)
|
||||||
|
|
||||||
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', body_html))) > 0: return {"error":"You can only type marseys!"}, 403
|
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', body_html))): return {"error":"You can only type marseys!"}, 403
|
||||||
|
|
||||||
if v.longpost:
|
if v.longpost:
|
||||||
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
||||||
|
|
|
@ -42,7 +42,7 @@ def feeds_user(v=None, sort='hot', t='all'):
|
||||||
with tag("id"):
|
with tag("id"):
|
||||||
text(post.fullname)
|
text(post.fullname)
|
||||||
|
|
||||||
if (post.edited_utc > 0):
|
if (post.edited_utc):
|
||||||
with tag("updated"):
|
with tag("updated"):
|
||||||
text(datetime.utcfromtimestamp(post.edited_utc).isoformat())
|
text(datetime.utcfromtimestamp(post.edited_utc).isoformat())
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ def feeds_user(v=None, sort='hot', t='all'):
|
||||||
|
|
||||||
doc.stag("media:thumbnail", url=image_url)
|
doc.stag("media:thumbnail", url=image_url)
|
||||||
|
|
||||||
if len(post.body_html) > 0:
|
if len(post.body_html):
|
||||||
with tag("content", type="html"):
|
with tag("content", type="html"):
|
||||||
doc.cdata(f'''<img alt="{post.realtitle(None)}" loading="lazy" src={image_url}><br>{post.realbody(None)}''')
|
doc.cdata(f'''<img alt="{post.realtitle(None)}" loading="lazy" src={image_url}><br>{post.realbody(None)}''')
|
||||||
|
|
||||||
|
|
|
@ -300,7 +300,7 @@ def sign_up_post(v):
|
||||||
ref_user = g.db.query(User).filter_by(id=ref_id).one_or_none()
|
ref_user = g.db.query(User).filter_by(id=ref_id).one_or_none()
|
||||||
|
|
||||||
if ref_user:
|
if ref_user:
|
||||||
if ref_user.referral_count > 0:
|
if ref_user.referral_count:
|
||||||
new_badge = Badge(user_id=ref_user.id, badge_id=10)
|
new_badge = Badge(user_id=ref_user.id, badge_id=10)
|
||||||
g.db.add(new_badge)
|
g.db.add(new_badge)
|
||||||
if ref_user.referral_count > 9:
|
if ref_user.referral_count > 9:
|
||||||
|
|
|
@ -436,7 +436,7 @@ def edit_post(pid, v):
|
||||||
if v.agendaposter and not v.marseyawarded: title = torture_ap(title, v.username)
|
if v.agendaposter and not v.marseyawarded: title = torture_ap(title, v.username)
|
||||||
|
|
||||||
title_html = filter_emojis_only(title)
|
title_html = filter_emojis_only(title)
|
||||||
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', title_html))) > 0: return {"error":"You can only type marseys!"}, 403
|
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', title_html))): return {"error":"You can only type marseys!"}, 403
|
||||||
p.title = title[:500]
|
p.title = title[:500]
|
||||||
p.title_html = title_html
|
p.title_html = title_html
|
||||||
|
|
||||||
|
@ -485,7 +485,7 @@ def edit_post(pid, v):
|
||||||
return {"error": reason}, 403
|
return {"error": reason}, 403
|
||||||
|
|
||||||
p.body = body
|
p.body = body
|
||||||
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', body_html))) > 0: return {"error":"You can only type marseys!"}, 40
|
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', body_html))): return {"error":"You can only type marseys!"}, 40
|
||||||
|
|
||||||
if v.longpost:
|
if v.longpost:
|
||||||
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
||||||
|
@ -724,7 +724,7 @@ def submit_post(v):
|
||||||
title_html = filter_emojis_only(title)
|
title_html = filter_emojis_only(title)
|
||||||
body = request.values.get("body", "").strip().replace('','')
|
body = request.values.get("body", "").strip().replace('','')
|
||||||
|
|
||||||
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', title_html))) > 0: return {"error":"You can only type marseys!"}, 40
|
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', title_html))): return {"error":"You can only type marseys!"}, 40
|
||||||
|
|
||||||
if v.longpost:
|
if v.longpost:
|
||||||
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
||||||
|
@ -736,8 +736,8 @@ def submit_post(v):
|
||||||
elif "/media.giphy.com/" in url or "/c.tenor.com/" in url: url = url.replace(".gif", ".webp")
|
elif "/media.giphy.com/" in url or "/c.tenor.com/" in url: url = url.replace(".gif", ".webp")
|
||||||
elif "/i.ibb.com/" in url: url = url.replace(".png", ".webp").replace(".jpg", ".webp").replace(".jpeg", ".webp").replace(".gif", ".webp")
|
elif "/i.ibb.com/" in url: url = url.replace(".png", ".webp").replace(".jpg", ".webp").replace(".jpeg", ".webp").replace(".gif", ".webp")
|
||||||
|
|
||||||
for rd in ["https://reddit.com/", "https://new.reddit.com/", "https://www.reddit.com/", "https://redd.it/"]:
|
for rd in ["://reddit.com", "://new.reddit.com", "://www.reddit.com", "://redd.it", "://libredd.it"]:
|
||||||
url = url.replace(rd, "https://old.reddit.com/")
|
url = url.replace(rd, "://old.reddit.com")
|
||||||
|
|
||||||
url = url.replace("old.reddit.com/gallery", "new.reddit.com/gallery").replace("https://youtu.be/", "https://youtube.com/watch?v=").replace("https://music.youtube.com/watch?v=", "https://youtube.com/watch?v=").replace("https://open.spotify.com/", "https://open.spotify.com/embed/").replace("https://streamable.com/", "https://streamable.com/e/").replace("https://youtube.com/shorts/", "https://youtube.com/watch?v=").replace("https://mobile.twitter", "https://twitter").replace("https://m.facebook", "https://facebook").replace("m.wikipedia.org", "wikipedia.org").replace("https://m.youtube", "https://youtube").replace("https://www.youtube", "https://youtube")
|
url = url.replace("old.reddit.com/gallery", "new.reddit.com/gallery").replace("https://youtu.be/", "https://youtube.com/watch?v=").replace("https://music.youtube.com/watch?v=", "https://youtube.com/watch?v=").replace("https://open.spotify.com/", "https://open.spotify.com/embed/").replace("https://streamable.com/", "https://streamable.com/e/").replace("https://youtube.com/shorts/", "https://youtube.com/watch?v=").replace("https://mobile.twitter", "https://twitter").replace("https://m.facebook", "https://facebook").replace("m.wikipedia.org", "wikipedia.org").replace("https://m.youtube", "https://youtube").replace("https://www.youtube", "https://youtube")
|
||||||
|
|
||||||
|
@ -944,7 +944,7 @@ def submit_post(v):
|
||||||
|
|
||||||
body_html = sanitize(body)
|
body_html = sanitize(body)
|
||||||
|
|
||||||
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', body_html))) > 0: return {"error":"You can only type marseys!"}, 400
|
if v.marseyawarded and len(list(re.finditer('>[^<\s+]|[^>\s+]<', body_html))): return {"error":"You can only type marseys!"}, 400
|
||||||
|
|
||||||
if v.longpost:
|
if v.longpost:
|
||||||
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
if len(body) < 280 or ' [](' in body or body.startswith('[]('): return {"error":"You have to type more than 280 characters!"}, 403
|
||||||
|
|
|
@ -519,7 +519,7 @@ def gumroad(v):
|
||||||
v.procoins += procoins
|
v.procoins += procoins
|
||||||
send_repeatable_notification(v.id, f"You have received {procoins} Marseybux! You can use them to buy awards in the [shop](/shop).")
|
send_repeatable_notification(v.id, f"You have received {procoins} Marseybux! You can use them to buy awards in the [shop](/shop).")
|
||||||
|
|
||||||
if v.truecoins > 150 and v.patron > 0: v.cluballowed = True
|
if v.truecoins > 150 and v.patron: v.cluballowed = True
|
||||||
if v.patron > 3 and v.verified == None: v.verified = "Verified"
|
if v.patron > 3 and v.verified == None: v.verified = "Verified"
|
||||||
|
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
|
|
|
@ -49,7 +49,7 @@ def participation_stats(v):
|
||||||
data = {"marseys": len(marseys),
|
data = {"marseys": len(marseys),
|
||||||
"users": g.db.query(User.id).count(),
|
"users": g.db.query(User.id).count(),
|
||||||
"private_users": g.db.query(User.id).filter_by(is_private=True).count(),
|
"private_users": g.db.query(User.id).filter_by(is_private=True).count(),
|
||||||
"banned_users": g.db.query(User.id).filter(User.is_banned > 0).count(),
|
"banned_users": g.db.query(User.id).filter(User.is_banned).count(),
|
||||||
"verified_email_users": g.db.query(User.id).filter_by(is_activated=True).count(),
|
"verified_email_users": g.db.query(User.id).filter_by(is_activated=True).count(),
|
||||||
"total_coins": g.db.query(func.sum(User.coins)).scalar(),
|
"total_coins": g.db.query(func.sum(User.coins)).scalar(),
|
||||||
"signups_last_24h": g.db.query(User.id).filter(User.created_utc > day).count(),
|
"signups_last_24h": g.db.query(User.id).filter(User.created_utc > day).count(),
|
||||||
|
@ -57,7 +57,7 @@ def participation_stats(v):
|
||||||
"posting_users": g.db.query(Submission.author_id).distinct().count(),
|
"posting_users": g.db.query(Submission.author_id).distinct().count(),
|
||||||
"listed_posts": g.db.query(Submission.id).filter_by(is_banned=False).filter(Submission.deleted_utc == 0).count(),
|
"listed_posts": g.db.query(Submission.id).filter_by(is_banned=False).filter(Submission.deleted_utc == 0).count(),
|
||||||
"removed_posts": g.db.query(Submission.id).filter_by(is_banned=True).count(),
|
"removed_posts": g.db.query(Submission.id).filter_by(is_banned=True).count(),
|
||||||
"deleted_posts": g.db.query(Submission.id).filter(Submission.deleted_utc > 0).count(),
|
"deleted_posts": g.db.query(Submission.id).filter(Submission.deleted_utc).count(),
|
||||||
"posts_last_24h": g.db.query(Submission.id).filter(Submission.created_utc > day).count(),
|
"posts_last_24h": g.db.query(Submission.id).filter(Submission.created_utc > day).count(),
|
||||||
"total_comments": g.db.query(Comment.id).filter(Comment.author_id.notin_((AUTOJANNY_ID,NOTIFICATIONS_ID))).count(),
|
"total_comments": g.db.query(Comment.id).filter(Comment.author_id.notin_((AUTOJANNY_ID,NOTIFICATIONS_ID))).count(),
|
||||||
"commenting_users": g.db.query(Comment.author_id).distinct().count(),
|
"commenting_users": g.db.query(Comment.author_id).distinct().count(),
|
||||||
|
@ -166,7 +166,7 @@ def cached_chart(days):
|
||||||
@app.get("/paypigs")
|
@app.get("/paypigs")
|
||||||
@admin_level_required(3)
|
@admin_level_required(3)
|
||||||
def patrons(v):
|
def patrons(v):
|
||||||
users = g.db.query(User).filter(User.patron > 0).order_by(User.patron.desc(), User.id).all()
|
users = g.db.query(User).filter(User.patron).order_by(User.patron.desc(), User.id).all()
|
||||||
|
|
||||||
if not v or v.oldsite: template = ''
|
if not v or v.oldsite: template = ''
|
||||||
else: template = 'CHRISTMAS/'
|
else: template = 'CHRISTMAS/'
|
||||||
|
@ -383,7 +383,7 @@ def blocks(v):
|
||||||
@auth_required
|
@auth_required
|
||||||
def banned(v):
|
def banned(v):
|
||||||
|
|
||||||
users = [x for x in g.db.query(User).filter(User.is_banned > 0, User.unban_utc == 0).all()]
|
users = [x for x in g.db.query(User).filter(User.is_banned, User.unban_utc == 0).all()]
|
||||||
if not v or v.oldsite: template = ''
|
if not v or v.oldsite: template = ''
|
||||||
else: template = 'CHRISTMAS/'
|
else: template = 'CHRISTMAS/'
|
||||||
return render_template(f"{template}banned.html", v=v, users=users)
|
return render_template(f"{template}banned.html", v=v, users=users)
|
||||||
|
|
|
@ -190,7 +190,7 @@ def steal(v):
|
||||||
@app.get("/rentoids")
|
@app.get("/rentoids")
|
||||||
@auth_required
|
@auth_required
|
||||||
def rentoids(v):
|
def rentoids(v):
|
||||||
users = g.db.query(User).filter(User.rent_utc > 0).all()
|
users = g.db.query(User).filter(User.rent_utc).all()
|
||||||
if not v or v.oldsite: template = ''
|
if not v or v.oldsite: template = ''
|
||||||
else: template = 'CHRISTMAS/'
|
else: template = 'CHRISTMAS/'
|
||||||
return render_template(f"{template}rentoids.html", v=v, users=users)
|
return render_template(f"{template}rentoids.html", v=v, users=users)
|
||||||
|
@ -199,9 +199,9 @@ def rentoids(v):
|
||||||
@app.get("/thiefs")
|
@app.get("/thiefs")
|
||||||
@auth_required
|
@auth_required
|
||||||
def thiefs(v):
|
def thiefs(v):
|
||||||
successful = g.db.query(User).filter(User.steal_utc > 0).all()
|
successful = g.db.query(User).filter(User.steal_utc).all()
|
||||||
failed = g.db.query(User).filter(User.fail_utc > 0).all()
|
failed = g.db.query(User).filter(User.fail_utc).all()
|
||||||
failed2 = g.db.query(User).filter(User.fail2_utc > 0).all()
|
failed2 = g.db.query(User).filter(User.fail2_utc).all()
|
||||||
if not v or v.oldsite: template = ''
|
if not v or v.oldsite: template = ''
|
||||||
else: template = 'CHRISTMAS/'
|
else: template = 'CHRISTMAS/'
|
||||||
return render_template(f"{template}thiefs.html", v=v, successful=successful, failed=failed, failed2=failed2)
|
return render_template(f"{template}thiefs.html", v=v, successful=successful, failed=failed, failed2=failed2)
|
||||||
|
|
|
@ -77,7 +77,7 @@
|
||||||
{% set replies=c.replies %}
|
{% set replies=c.replies %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if (c.is_banned or c.deleted_utc > 0 or c.is_blocking) and not (v and v.admin_level > 1) and not (v and v.id==c.author_id) %}
|
{% if (c.is_banned or c.deleted_utc or c.is_blocking) and not (v and v.admin_level > 1) and not (v and v.id==c.author_id) %}
|
||||||
|
|
||||||
<div id="comment-{{c.id}}" class="comment">
|
<div id="comment-{{c.id}}" class="comment">
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@
|
||||||
<div class="user-info">
|
<div class="user-info">
|
||||||
<span class="comment-collapse-icon" onclick="collapse_comment('{{c.id}}')"></span>
|
<span class="comment-collapse-icon" onclick="collapse_comment('{{c.id}}')"></span>
|
||||||
{% if standalone and c.over_18 %}<span class="badge badge-danger">+18</span> {% endif %}
|
{% if standalone and c.over_18 %}<span class="badge badge-danger">+18</span> {% endif %}
|
||||||
{% if c.is_banned %}removed by @{{c.ban_reason}}{% elif c.deleted_utc > 0 %}Deleted by author{% elif c.is_blocking %}You are blocking @{{c.author.username}}{% endif %}
|
{% if c.is_banned %}removed by @{{c.ban_reason}}{% elif c.deleted_utc %}Deleted by author{% elif c.is_blocking %}You are blocking @{{c.author.username}}{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -416,14 +416,14 @@
|
||||||
|
|
||||||
<button class="btn caction py-0 nobackground px-1 text-muted" onclick="toggleEdit('{{c.id}}')"><i class="fas fa-edit fa-fw"></i>Edit</button>
|
<button class="btn caction py-0 nobackground px-1 text-muted" onclick="toggleEdit('{{c.id}}')"><i class="fas fa-edit fa-fw"></i>Edit</button>
|
||||||
|
|
||||||
{% if c.deleted_utc > 0 %}
|
{% if c.deleted_utc %}
|
||||||
<button class="btn caction py-0 nobackground px-1 text-muted" onclick="post_toast('/undelete/comment/{{c.id}}')"><i class="fas fa-trash-alt fa-fw"></i>Undelete</button>
|
<button class="btn caction py-0 nobackground px-1 text-muted" onclick="post_toast('/undelete/comment/{{c.id}}')"><i class="fas fa-trash-alt fa-fw"></i>Undelete</button>
|
||||||
{% else %}
|
{% else %}
|
||||||
<button class="btn caction py-0 nobackground px-1 text-muted" data-bs-toggle="modal" data-bs-target="#deleteCommentModal" onclick="delete_commentModal('{{c.id}}')"><i class="fas fa-trash-alt fa-fw"></i>Delete</button>
|
<button class="btn caction py-0 nobackground px-1 text-muted" data-bs-toggle="modal" data-bs-target="#deleteCommentModal" onclick="delete_commentModal('{{c.id}}')"><i class="fas fa-trash-alt fa-fw"></i>Delete</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if v and v.admin_level > 0 and v.id==c.author_id %}
|
{% if v and v.admin_level and v.id==c.author_id %}
|
||||||
<button id="undistinguish-{{c.id}}" class="btn caction py-0 nobackground px-1 d-none {% if c.distinguish_level %}d-md-inline-block{% endif %} text-info" onclick="post_toast3('/distinguish_comment/{{c.id}}','distinguish-{{c.id}}','undistinguish-{{c.id}}','no')"><i class="fas fa-id-badge text-info fa-fw"></i>Undistinguish</button>
|
<button id="undistinguish-{{c.id}}" class="btn caction py-0 nobackground px-1 d-none {% if c.distinguish_level %}d-md-inline-block{% endif %} text-info" onclick="post_toast3('/distinguish_comment/{{c.id}}','distinguish-{{c.id}}','undistinguish-{{c.id}}','no')"><i class="fas fa-id-badge text-info fa-fw"></i>Undistinguish</button>
|
||||||
<button id="distinguish-{{c.id}}" class="btn caction py-0 nobackground px-1 d-none {% if not c.distinguish_level %}d-md-inline-block{% endif %} text-info" onclick="post_toast3('/distinguish_comment/{{c.id}}','distinguish-{{c.id}}','undistinguish-{{c.id}}','yes')"><i class="fas fa-id-badge text-info fa-fw"></i>Distinguish</button>
|
<button id="distinguish-{{c.id}}" class="btn caction py-0 nobackground px-1 d-none {% if not c.distinguish_level %}d-md-inline-block{% endif %} text-info" onclick="post_toast3('/distinguish_comment/{{c.id}}','distinguish-{{c.id}}','undistinguish-{{c.id}}','yes')"><i class="fas fa-id-badge text-info fa-fw"></i>Distinguish</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -584,7 +584,12 @@
|
||||||
{% if c.author_id == v.id %}
|
{% if c.author_id == v.id %}
|
||||||
<a role="button" data-bs-dismiss="modal" onclick="toggleEdit('{{c.id}}')" class="list-group-item"><i class="fas fa-edit"></i>Edit</a>
|
<a role="button" data-bs-dismiss="modal" onclick="toggleEdit('{{c.id}}')" class="list-group-item"><i class="fas fa-edit"></i>Edit</a>
|
||||||
|
|
||||||
{% if c.deleted_utc > 0 %}
|
{% if v.admin_level %}
|
||||||
|
<a id="distinguish2-{{c.id}}" class="list-group-item {% if c.distinguish_level %}d-none{% endif %} text-info" role="button" onclick="post_toast2('/distinguish_comment/{{c.id}}','distinguish2-{{c.id}}','undistinguish2-{{c.id}}')" data-bs-dismiss="modal"><i class="fas fa-id-badge text-info"></i>Distinguish</a>
|
||||||
|
<a id="undistinguish2-{{c.id}}" class="list-group-item {% if not c.distinguish_level %}d-none{% endif %} text-info" role="button" onclick="post_toast2('/distinguish_comment/{{c.id}}','distinguish2-{{c.id}}','undistinguish2-{{c.id}}')" data-bs-dismiss="modal"><i class="fas fa-id-badge text-info"></i>Undistinguish</a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if c.deleted_utc %}
|
||||||
<a role="button" onclick="post_toast('/undelete/comment/{{c.id}}')" data-bs-dismiss="modal" class="list-group-item"><i class="fas fa-trash-alt"></i>Undelete</a>
|
<a role="button" onclick="post_toast('/undelete/comment/{{c.id}}')" data-bs-dismiss="modal" class="list-group-item"><i class="fas fa-trash-alt"></i>Undelete</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a role="button" data-bs-toggle="modal" data-bs-target="#deleteCommentModal" onclick="delete_commentModal('{{c.id}}')" class="list-group-item"><i class="fas fa-trash-alt"></i>Delete</a>
|
<a role="button" data-bs-toggle="modal" data-bs-target="#deleteCommentModal" onclick="delete_commentModal('{{c.id}}')" class="list-group-item"><i class="fas fa-trash-alt"></i>Delete</a>
|
||||||
|
@ -635,10 +640,7 @@
|
||||||
<a id="unmark2-{{c.id}}" class="{% if not c.over_18 %}d-none{% endif %} list-group-item text-danger" role="button" onclick="post_toast2('/toggle_comment_nsfw/{{c.id}}','mark2-{{c.id}}','unmark2-{{c.id}}')" data-bs-dismiss="modal"><i class="fas fa-eye-evil text-danger"></i>Unmark +18</a>
|
<a id="unmark2-{{c.id}}" class="{% if not c.over_18 %}d-none{% endif %} list-group-item text-danger" role="button" onclick="post_toast2('/toggle_comment_nsfw/{{c.id}}','mark2-{{c.id}}','unmark2-{{c.id}}')" data-bs-dismiss="modal"><i class="fas fa-eye-evil text-danger"></i>Unmark +18</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if v.id == c.author_id %}
|
{% if v.id != c.author_id %}
|
||||||
<a id="distinguish2-{{c.id}}" class="list-group-item {% if c.distinguish_level %}d-none{% endif %} text-info" role="button" onclick="post_toast2('/distinguish_comment/{{c.id}}','distinguish2-{{c.id}}','undistinguish2-{{c.id}}')" data-bs-dismiss="modal"><i class="fas fa-id-badge text-info"></i>Distinguish</a>
|
|
||||||
<a id="undistinguish2-{{c.id}}" class="list-group-item {% if not c.distinguish_level %}d-none{% endif %} text-info" role="button" onclick="post_toast2('/distinguish_comment/{{c.id}}','distinguish2-{{c.id}}','undistinguish2-{{c.id}}')" data-bs-dismiss="modal"><i class="fas fa-id-badge text-info"></i>Undistinguish</a>
|
|
||||||
{% else %}
|
|
||||||
<a id="ban2-{{c.id}}" class="{% if c.author.is_suspended %}d-none{% endif %} list-group-item text-danger" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/comment/{{c.id}}', '{{ c.author.id }}', '{{c.author.username}}')" role="button"><i class="fas fa-user-slash text-danger fa-fw"></i>Ban user</a>
|
<a id="ban2-{{c.id}}" class="{% if c.author.is_suspended %}d-none{% endif %} list-group-item text-danger" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#banModal" onclick="banModal('/comment/{{c.id}}', '{{ c.author.id }}', '{{c.author.username}}')" role="button"><i class="fas fa-user-slash text-danger fa-fw"></i>Ban user</a>
|
||||||
<a id="unban2-{{c.id}}" class="{% if not c.author.is_suspended %}d-none{% endif %} list-group-item text-success" role="button" onclick="post_toast2('/unban_user/{{c.author_id}}','ban2-{{c.id}}','unban2-{{c.id}}')" data-bs-dismiss="modal"><i class="fas fa-user-minus fa-fw text-success"></i>Unban user</a>
|
<a id="unban2-{{c.id}}" class="{% if not c.author.is_suspended %}d-none{% endif %} list-group-item text-success" role="button" onclick="post_toast2('/unban_user/{{c.author_id}}','ban2-{{c.id}}','unban2-{{c.id}}')" data-bs-dismiss="modal"><i class="fas fa-user-minus fa-fw text-success"></i>Unban user</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -124,7 +124,7 @@
|
||||||
<meta charset="utf-8" >
|
<meta charset="utf-8" >
|
||||||
<meta property="og:type" content="article" >
|
<meta property="og:type" content="article" >
|
||||||
|
|
||||||
{% if comment_info and not comment_info.is_banned and not linked_comment.deleted_utc > 0 %}
|
{% if comment_info and not comment_info.is_banned and not linked_comment.deleted_utc %}
|
||||||
<title>{{'@'+comment_info.author.username}} comments on "{{p.plaintitle(v)}} - {{'SITE_NAME' | app_config}}"</title>
|
<title>{{'@'+comment_info.author.username}} comments on "{{p.plaintitle(v)}} - {{'SITE_NAME' | app_config}}"</title>
|
||||||
|
|
||||||
|
|
||||||
|
@ -217,6 +217,11 @@
|
||||||
{% if v.id==p.author_id %}
|
{% if v.id==p.author_id %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-bs-dismiss="modal" onclick="togglePostEdit('{{p.id}}')"><i class="far fa-edit text-center text-muted mr-3"></i>Edit</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-bs-dismiss="modal" onclick="togglePostEdit('{{p.id}}')"><i class="far fa-edit text-center text-muted mr-3"></i>Edit</button>
|
||||||
|
|
||||||
|
{% if v.admin_level %}
|
||||||
|
<button id="distinguish2-{{p.id}}" class="{% if p.distinguish_level %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish2-{{p.id}}','undistinguish2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-crown text-center mr-3"></i>Distinguish</button>
|
||||||
|
<button id="undistinguish2-{{p.id}}" class="{% if not p.distinguish_level %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish2-{{p.id}}','undistinguish2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-crown text-center mr-3"></i>Undistinguish</button>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if p.private %}
|
{% if p.private %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" role="button" onclick="post_toast('/publish/{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-globe text-center text-muted mr-3"></i>Publish</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" role="button" onclick="post_toast('/publish/{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-globe text-center text-muted mr-3"></i>Publish</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -226,7 +231,7 @@
|
||||||
<button id="unpin-profile2-{{p.id}}" class="{% if not p.is_pinned %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-muted text-left" role="button" onclick="post_toast2('/pin/{{p.id}}','pin-profile2-{{p.id}}','unpin-profile2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Unpin from profile</button>
|
<button id="unpin-profile2-{{p.id}}" class="{% if not p.is_pinned %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-muted text-left" role="button" onclick="post_toast2('/pin/{{p.id}}','pin-profile2-{{p.id}}','unpin-profile2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Unpin from profile</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if p.deleted_utc > 0 %}
|
{% if p.deleted_utc %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-left text-success" role="button" onclick="post_toast('/undelete_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-trash-alt text-center mr-3"></i>Undelete</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-left text-success" role="button" onclick="post_toast('/undelete_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-trash-alt text-center mr-3"></i>Undelete</button>
|
||||||
{% else %}
|
{% else %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-left text-danger" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')"><i class="far fa-trash-alt mr-3"></i>Delete</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-left text-danger" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')"><i class="far fa-trash-alt mr-3"></i>Delete</button>
|
||||||
|
@ -274,11 +279,6 @@
|
||||||
<button id="pin2-{{p.id}}" class="{% if p.stickied %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/sticky/{{p.id}}','pin2-{{p.id}}','unpin2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Pin</button>
|
<button id="pin2-{{p.id}}" class="{% if p.stickied %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/sticky/{{p.id}}','pin2-{{p.id}}','unpin2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Pin</button>
|
||||||
<button id="unpin2-{{p.id}}" class="{% if not p.stickied %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/unsticky/{{p.id}}','pin2-{{p.id}}','unpin2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Unpin</button>
|
<button id="unpin2-{{p.id}}" class="{% if not p.stickied %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/unsticky/{{p.id}}','pin2-{{p.id}}','unpin2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Unpin</button>
|
||||||
|
|
||||||
{% if v==p.author %}
|
|
||||||
<button id="distinguish2-{{p.id}}" class="{% if p.distinguish_level %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish2-{{p.id}}','undistinguish2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-crown text-center mr-3"></i>Distinguish</button>
|
|
||||||
<button id="undistinguish2-{{p.id}}" class="{% if not p.distinguish_level %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish2-{{p.id}}','undistinguish2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-crown text-center mr-3"></i>Undistinguish</button>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if "/reported/" in request.path %}
|
{% if "/reported/" in request.path %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-danger text-left" role="button" onclick="post_toast('/ban_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-ban text-center mr-3"></i>Remove</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-danger text-left" role="button" onclick="post_toast('/ban_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-ban text-center mr-3"></i>Remove</button>
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-success text-left" role="button" onclick="post_toast('/unban_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-check text-center mr-3"></i>Approve</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-success text-left" role="button" onclick="post_toast('/unban_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-check text-center mr-3"></i>Approve</button>
|
||||||
|
@ -321,7 +321,7 @@
|
||||||
<div id="post-root" class="col-12">
|
<div id="post-root" class="col-12">
|
||||||
|
|
||||||
<div id="post-{{p.id}}" class="card border-0 mt-3{% if p.is_banned %} banned{% endif %}{% if p.stickied %} stickied{% endif %}{% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}">
|
<div id="post-{{p.id}}" class="card border-0 mt-3{% if p.is_banned %} banned{% endif %}{% if p.stickied %} stickied{% endif %}{% if voted==1 %} upvoted{% elif voted==-1 %} downvoted{% endif %}">
|
||||||
<div class="{% if p.deleted_utc > 0 %}deleted {% endif %}d-flex flex-row-reverse flex-nowrap justify-content-end">
|
<div class="{% if p.deleted_utc %}deleted {% endif %}d-flex flex-row-reverse flex-nowrap justify-content-end">
|
||||||
|
|
||||||
{% if not p.is_image and p.thumb_url and not p.embed_url %}
|
{% if not p.is_image and p.thumb_url and not p.embed_url %}
|
||||||
<div class="card-header bg-transparent border-0 d-none d-md-flex flex-row flex-nowrap pl-3 p-0">
|
<div class="card-header bg-transparent border-0 d-none d-md-flex flex-row flex-nowrap pl-3 p-0">
|
||||||
|
@ -329,7 +329,7 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div id="post-content" class="{% if p.deleted_utc > 0 %}deleted {% endif %}card-block w-100 my-md-auto">
|
<div id="post-content" class="{% if p.deleted_utc %}deleted {% endif %}card-block w-100 my-md-auto">
|
||||||
|
|
||||||
<div class="post-meta text-left mb-2">
|
<div class="post-meta text-left mb-2">
|
||||||
{% if p.bannedfor %}
|
{% if p.bannedfor %}
|
||||||
|
@ -559,22 +559,24 @@
|
||||||
<a id="unpin-profile-{{p.id}}" class="{% if not p.is_pinned %}d-none{% endif %} list-inline-item text-muted" role="button" onclick="post_toast2('/pin/{{p.id}}','unpin-profile-{{p.id}}','pin-profile-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Unpin from profile</a>
|
<a id="unpin-profile-{{p.id}}" class="{% if not p.is_pinned %}d-none{% endif %} list-inline-item text-muted" role="button" onclick="post_toast2('/pin/{{p.id}}','unpin-profile-{{p.id}}','pin-profile-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Unpin from profile</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if p.deleted_utc > 0 %}
|
{% if p.deleted_utc %}
|
||||||
<a class="list-inline-item" role="button" onclick="post_toast('/undelete_post/{{p.id}}')"><i class="fas fa-trash-alt"></i>Undelete</a>
|
<a class="list-inline-item" role="button" onclick="post_toast('/undelete_post/{{p.id}}')"><i class="fas fa-trash-alt"></i>Undelete</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="list-inline-item" role="button" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')"><i class="fas fa-trash-alt"></i>Delete</a>
|
<a class="list-inline-item" role="button" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')"><i class="fas fa-trash-alt"></i>Delete</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if v and v.admin_level > 1 %}
|
|
||||||
<a id="pin-{{p.id}}" class="{% if p.stickied %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/sticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Pin</a>
|
{% if v %}
|
||||||
<a id="unpin-{{p.id}}" class="{% if not p.stickied %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/unsticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Unpin</a>
|
{% if v.admin_level and v == p.author %}
|
||||||
{% if v==p.author %}
|
|
||||||
<a id="distinguish-{{p.id}}" class="{% if p.distinguish_level %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')"><i class="fas fa-crown"></i>Distinguish</a>
|
<a id="distinguish-{{p.id}}" class="{% if p.distinguish_level %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')"><i class="fas fa-crown"></i>Distinguish</a>
|
||||||
<a id="undistinguish-{{p.id}}" class="{% if not p.distinguish_level %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')"><i class="fas fa-crown"></i>Undistinguish</a>
|
<a id="undistinguish-{{p.id}}" class="{% if not p.distinguish_level %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')"><i class="fas fa-crown"></i>Undistinguish</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if v %}
|
{% if v.admin_level > 1 %}
|
||||||
|
<a id="pin-{{p.id}}" class="{% if p.stickied %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/sticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Pin</a>
|
||||||
|
<a id="unpin-{{p.id}}" class="{% if not p.stickied %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/unsticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Unpin</a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if v.admin_level > 1 or v.id == p.author.id and v.club_allowed != False %}
|
{% if v.admin_level > 1 or v.id == p.author.id and v.club_allowed != False %}
|
||||||
<a id="club-{{p.id}}" class="{% if p.club %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/toggle_club/{{p.id}}','club-{{p.id}}','unclub-{{p.id}}')"><i class="fas fa-eye-slash"></i>Mark club</a>
|
<a id="club-{{p.id}}" class="{% if p.club %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/toggle_club/{{p.id}}','club-{{p.id}}','unclub-{{p.id}}')"><i class="fas fa-eye-slash"></i>Mark club</a>
|
||||||
<a id="unclub-{{p.id}}" class="{% if not p.club %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/toggle_club/{{p.id}}','club-{{p.id}}','unclub-{{p.id}}')"><i class="fas fa-eye"></i>Unmark club</a>
|
<a id="unclub-{{p.id}}" class="{% if not p.club %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/toggle_club/{{p.id}}','club-{{p.id}}','unclub-{{p.id}}')"><i class="fas fa-eye"></i>Unmark club</a>
|
||||||
|
|
|
@ -246,7 +246,7 @@
|
||||||
<a id="unpin-profile-{{p.id}}" class="{% if not p.is_pinned %}d-none{% endif %} list-inline-item text-muted" role="button" onclick="post_toast2('/pin/{{p.id}}','unpin-profile-{{p.id}}','pin-profile-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Unpin from profile</a>
|
<a id="unpin-profile-{{p.id}}" class="{% if not p.is_pinned %}d-none{% endif %} list-inline-item text-muted" role="button" onclick="post_toast2('/pin/{{p.id}}','unpin-profile-{{p.id}}','pin-profile-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Unpin from profile</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if p.deleted_utc > 0 %}
|
{% if p.deleted_utc %}
|
||||||
<a class="list-inline-item" role="button" onclick="post_toast('/undelete_post/{{p.id}}')"><i class="fas fa-trash-alt"></i>Undelete</a>
|
<a class="list-inline-item" role="button" onclick="post_toast('/undelete_post/{{p.id}}')"><i class="fas fa-trash-alt"></i>Undelete</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="list-inline-item" role="button" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')"><i class="fas fa-trash-alt"></i>Delete</a>
|
<a class="list-inline-item" role="button" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')"><i class="fas fa-trash-alt"></i>Delete</a>
|
||||||
|
@ -256,14 +256,14 @@
|
||||||
{% if v %}
|
{% if v %}
|
||||||
<a class="list-inline-item" role="button" data-bs-toggle="dropdown" aria-expanded="false" ><i class="fas fa-ellipsis-h fa-fw"></i></a>
|
<a class="list-inline-item" role="button" data-bs-toggle="dropdown" aria-expanded="false" ><i class="fas fa-ellipsis-h fa-fw"></i></a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
|
{% if v.admin_level and v == p.author %}
|
||||||
|
<a id="distinguish-{{p.id}}" class="dropdown-item {% if p.distinguish_level %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')"><i class="fas fa-crown"></i>Distinguish</a>
|
||||||
|
<a id="undistinguish-{{p.id}}" class="dropdown-item {% if not p.distinguish_level %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')"><i class="fas fa-crown"></i>Undistinguish</a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if v.admin_level > 1 %}
|
{% if v.admin_level > 1 %}
|
||||||
<a id="pin-{{p.id}}" class="dropdown-item {% if p.stickied %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/sticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Pin</a>
|
<a id="pin-{{p.id}}" class="dropdown-item {% if p.stickied %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/sticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Pin</a>
|
||||||
<a id="unpin-{{p.id}}" class="dropdown-item {% if not p.stickied %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/unsticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Unpin</a>
|
<a id="unpin-{{p.id}}" class="dropdown-item {% if not p.stickied %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/unsticky/{{p.id}}','pin-{{p.id}}','unpin-{{p.id}}')"><i class="fas fa-thumbtack fa-rotate--45"></i>Unpin</a>
|
||||||
{% if v == p.author %}
|
|
||||||
<a id="distinguish-{{p.id}}" class="dropdown-item {% if p.distinguish_level %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')"><i class="fas fa-crown"></i>Distinguish</a>
|
|
||||||
<a id="undistinguish-{{p.id}}" class="dropdown-item {% if not p.distinguish_level %}d-none{% endif %} list-inline-item text-info" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish-{{p.id}}','undistinguish-{{p.id}}')"><i class="fas fa-crown"></i>Undistinguish</a>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if v.admin_level > 1 or v.id == p.author.id and v.club_allowed != False %}
|
{% if v.admin_level > 1 or v.id == p.author.id and v.club_allowed != False %}
|
||||||
|
@ -416,6 +416,11 @@
|
||||||
{% if v.id==p.author_id %}
|
{% if v.id==p.author_id %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-bs-dismiss="modal" onclick="togglePostEdit('{{p.id}}')"><i class="far fa-edit text-center text-muted mr-3"></i>Edit</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" data-bs-dismiss="modal" onclick="togglePostEdit('{{p.id}}')"><i class="far fa-edit text-center text-muted mr-3"></i>Edit</button>
|
||||||
|
|
||||||
|
{% if v.admin_level %}
|
||||||
|
<button id="distinguish2-{{p.id}}" class="{% if p.distinguish_level %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish2-{{p.id}}','undistinguish2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-crown text-center mr-3"></i>Distinguish</button>
|
||||||
|
<button id="undistinguish2-{{p.id}}" class="{% if not p.distinguish_level %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish2-{{p.id}}','undistinguish2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-crown text-center mr-3"></i>Undistinguish</button>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if p.private %}
|
{% if p.private %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" role="button" onclick="post_toast('/publish/{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-globe text-center text-muted mr-3"></i>Publish</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-left text-muted" role="button" onclick="post_toast('/publish/{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-globe text-center text-muted mr-3"></i>Publish</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -425,7 +430,7 @@
|
||||||
<button id="unpin-profile2-{{p.id}}" class="{% if not p.is_pinned %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-muted text-left" role="button" onclick="post_toast2('/pin/{{p.id}}','pin-profile2-{{p.id}}','unpin-profile2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Unpin from profile</button>
|
<button id="unpin-profile2-{{p.id}}" class="{% if not p.is_pinned %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-muted text-left" role="button" onclick="post_toast2('/pin/{{p.id}}','pin-profile2-{{p.id}}','unpin-profile2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Unpin from profile</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if p.deleted_utc > 0 %}
|
{% if p.deleted_utc %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-left text-success" role="button" onclick="post_toast('/undelete_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-trash-alt text-center mr-3"></i>Undelete</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-left text-success" role="button" onclick="post_toast('/undelete_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-trash-alt text-center mr-3"></i>Undelete</button>
|
||||||
{% else %}
|
{% else %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-left text-danger" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')"><i class="far fa-trash-alt mr-3"></i>Delete</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-left text-danger" data-bs-toggle="modal" data-bs-dismiss="modal" data-bs-target="#deletePostModal" onclick="delete_postModal('{{p.id}}')"><i class="far fa-trash-alt mr-3"></i>Delete</button>
|
||||||
|
@ -469,11 +474,6 @@
|
||||||
<button id="pin2-{{p.id}}" class="{% if p.stickied %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/sticky/{{p.id}}','pin2-{{p.id}}','unpin2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Pin</button>
|
<button id="pin2-{{p.id}}" class="{% if p.stickied %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/sticky/{{p.id}}','pin2-{{p.id}}','unpin2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Pin</button>
|
||||||
<button id="unpin2-{{p.id}}" class="{% if not p.stickied %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/unsticky/{{p.id}}','pin2-{{p.id}}','unpin2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Unpin</button>
|
<button id="unpin2-{{p.id}}" class="{% if not p.stickied %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/unsticky/{{p.id}}','pin2-{{p.id}}','unpin2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-thumbtack fa-rotate--45 text-center mr-3"></i>Unpin</button>
|
||||||
|
|
||||||
{% if v==p.author %}
|
|
||||||
<button id="distinguish2-{{p.id}}" class="{% if p.distinguish_level %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish2-{{p.id}}','undistinguish2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-crown text-center mr-3"></i>Distinguish</button>
|
|
||||||
<button id="undistinguish2-{{p.id}}" class="{% if not p.distinguish_level %}d-none{% endif %} nobackground btn btn-link btn-block btn-lg text-left" role="button" onclick="post_toast2('/distinguish/{{p.id}}','distinguish2-{{p.id}}','undistinguish2-{{p.id}}')" data-bs-dismiss="modal"><i class="fas fa-crown text-center mr-3"></i>Undistinguish</button>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if "/reported/" in request.path %}
|
{% if "/reported/" in request.path %}
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-danger text-left" role="button" onclick="post_toast('/ban_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-ban text-center mr-3"></i>Remove</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-danger text-left" role="button" onclick="post_toast('/ban_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-ban text-center mr-3"></i>Remove</button>
|
||||||
<button class="nobackground btn btn-link btn-block btn-lg text-success text-left" role="button" onclick="post_toast('/unban_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-check text-center mr-3"></i>Approve</button>
|
<button class="nobackground btn btn-link btn-block btn-lg text-success text-left" role="button" onclick="post_toast('/unban_post/{{p.id}}')" data-bs-dismiss="modal"><i class="far fa-check text-center mr-3"></i>Approve</button>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue