clearer notifications for hole and admin actions

pull/64/head
Aevann1 2022-12-13 19:11:26 +02:00
parent 647d8fdd2a
commit 0376124eb0
8 changed files with 55 additions and 44 deletions

View File

@ -320,7 +320,7 @@ def revert_actions(v:User, username):
user.ban_reason = None user.ban_reason = None
if user.is_banned: if user.is_banned:
user.is_banned = 0 user.is_banned = 0
send_repeatable_notification(user.id, f"@{v.username} (Admin) has unbanned you!") send_repeatable_notification(user.id, f"@{v.username} (a site admin) has unbanned you!")
g.db.add(user) g.db.add(user)
for u in user.alts: for u in user.alts:
@ -329,7 +329,7 @@ def revert_actions(v:User, username):
u.ban_reason = None u.ban_reason = None
if u.is_banned: if u.is_banned:
u.is_banned = 0 u.is_banned = 0
send_repeatable_notification(u.id, f"@{v.username} (Admin) has unbanned you!") send_repeatable_notification(u.id, f"@{v.username} (a site admin) has unbanned you!")
g.db.add(u) g.db.add(u)
return {"message": f"@{user.username}'s admin actions have been reverted!"} return {"message": f"@{user.username}'s admin actions have been reverted!"}
@ -567,7 +567,7 @@ def badge_grant_post(v):
g.db.flush() g.db.flush()
if v.id != user.id: if v.id != user.id:
text = f"@{v.username} (Admin) has given you the following profile badge:\n\n![]({new_badge.path})\n\n**{new_badge.name}**\n\n{new_badge.badge.description}" text = f"@{v.username} (a site admin) has given you the following profile badge:\n\n![]({new_badge.path})\n\n**{new_badge.name}**\n\n{new_badge.badge.description}"
send_repeatable_notification(user.id, text) send_repeatable_notification(user.id, text)
ma = ModAction( ma = ModAction(
@ -601,7 +601,7 @@ def badge_remove_post(v):
return render_template("admin/badge_admin.html", v=v, badge_types=badges, grant=False, error="User doesn't have that badge.") return render_template("admin/badge_admin.html", v=v, badge_types=badges, grant=False, error="User doesn't have that badge.")
if v.id != user.id: if v.id != user.id:
text = f"@{v.username} (Admin) has removed the following profile badge from you:\n\n![]({badge.path})\n\n**{badge.name}**\n\n{badge.badge.description}" text = f"@{v.username} (a site admin) has removed the following profile badge from you:\n\n![]({badge.path})\n\n**{badge.name}**\n\n{badge.badge.description}"
send_repeatable_notification(user.id, text) send_repeatable_notification(user.id, text)
ma = ModAction( ma = ModAction(
@ -877,7 +877,7 @@ def unagendaposter(user_id, v):
badge = user.has_badge(28) badge = user.has_badge(28)
if badge: g.db.delete(badge) if badge: g.db.delete(badge)
send_repeatable_notification(user.id, f"@{v.username} (Admin) has unchudded you.") send_repeatable_notification(user.id, f"@{v.username} (a site admin) has unchudded you.")
return {"message": f"@{user.username} has been unchudded!"} return {"message": f"@{user.username} has been unchudded!"}
@ -1003,11 +1003,11 @@ def ban_user(user_id, v):
if days_txt.endswith('.0'): days_txt = days_txt[:-2] if days_txt.endswith('.0'): days_txt = days_txt[:-2]
duration = f"for {days_txt} day" duration = f"for {days_txt} day"
if days != 1: duration += "s" if days != 1: duration += "s"
if reason: text = f"@{v.username} (Admin) has banned you for **{days_txt}** days for the following reason:\n\n> {reason}" if reason: text = f"@{v.username} (a site admin) has banned you for **{days_txt}** days for the following reason:\n\n> {reason}"
else: text = f"@{v.username} (Admin) has banned you for **{days_txt}** days." else: text = f"@{v.username} (a site admin) has banned you for **{days_txt}** days."
else: else:
if reason: text = f"@{v.username} (Admin) has banned you permanently for the following reason:\n\n> {reason}" if reason: text = f"@{v.username} (a site admin) has banned you permanently for the following reason:\n\n> {reason}"
else: text = f"@{v.username} (Admin) has banned you permanently." else: text = f"@{v.username} (a site admin) has banned you permanently."
send_repeatable_notification(user.id, text) send_repeatable_notification(user.id, text)
@ -1062,12 +1062,12 @@ def agendaposter(user_id, v):
if days_txt.endswith('.0'): days_txt = days_txt[:-2] if days_txt.endswith('.0'): days_txt = days_txt[:-2]
duration = f"for {days_txt} day" duration = f"for {days_txt} day"
if days != 1: duration += "s" if days != 1: duration += "s"
if reason: text = f"@{v.username} (Admin) has chudded you for **{days_txt}** days for the following reason:\n\n> {reason}" if reason: text = f"@{v.username} (a site admin) has chudded you for **{days_txt}** days for the following reason:\n\n> {reason}"
else: text = f"@{v.username} (Admin) has chudded you for **{days_txt}** days." else: text = f"@{v.username} (a site admin) has chudded you for **{days_txt}** days."
else: else:
user.agendaposter = 1 user.agendaposter = 1
if reason: text = f"@{v.username} (Admin) has chudded you permanently for the following reason:\n\n> {reason}" if reason: text = f"@{v.username} (a site admin) has chudded you permanently for the following reason:\n\n> {reason}"
else: text = f"@{v.username} (Admin) has chudded you permanently." else: text = f"@{v.username} (a site admin) has chudded you permanently."
g.db.add(user) g.db.add(user)
@ -1121,11 +1121,11 @@ def unban_user(user_id, v):
user.is_banned = 0 user.is_banned = 0
user.unban_utc = 0 user.unban_utc = 0
user.ban_reason = None user.ban_reason = None
send_repeatable_notification(user.id, f"@{v.username} (Admin) has unbanned you!") send_repeatable_notification(user.id, f"@{v.username} (a site admin) has unbanned you!")
g.db.add(user) g.db.add(user)
for x in user.alts: for x in user.alts:
if x.is_banned: send_repeatable_notification(x.id, f"@{v.username} (Admin) has unbanned you!") if x.is_banned: send_repeatable_notification(x.id, f"@{v.username} (a site admin) has unbanned you!")
x.is_banned = 0 x.is_banned = 0
x.unban_utc = 0 x.unban_utc = 0
x.ban_reason = None x.ban_reason = None
@ -1279,7 +1279,7 @@ def sticky_post(post_id, v):
pin_time = 'for 1 hour' pin_time = 'for 1 hour'
code = 200 code = 200
if v.id != post.author_id: if v.id != post.author_id:
send_repeatable_notification(post.author_id, f"@{v.username} (Admin) has pinned [{post.title}](/post/{post_id})") send_repeatable_notification(post.author_id, f"@{v.username} (a site admin) has pinned [{post.title}](/post/{post_id})")
else: else:
if pins >= PIN_LIMIT + 1: if pins >= PIN_LIMIT + 1:
abort(403, f"Can't exceed {PIN_LIMIT} pinned posts limit!") abort(403, f"Can't exceed {PIN_LIMIT} pinned posts limit!")
@ -1324,7 +1324,7 @@ def unsticky_post(post_id, v):
g.db.add(ma) g.db.add(ma)
if v.id != post.author_id: if v.id != post.author_id:
send_repeatable_notification(post.author_id, f"@{v.username} (Admin) has unpinned [{post.title}](/post/{post_id})") send_repeatable_notification(post.author_id, f"@{v.username} (a site admin) has unpinned [{post.title}](/post/{post_id})")
cache.delete_memoized(frontlist) cache.delete_memoized(frontlist)
return {"message": "Post unpinned!"} return {"message": "Post unpinned!"}
@ -1346,7 +1346,7 @@ def sticky_comment(cid, v):
g.db.add(ma) g.db.add(ma)
if v.id != comment.author_id: if v.id != comment.author_id:
message = f"@{v.username} (Admin) has pinned your [comment]({comment.shortlink})" message = f"@{v.username} (a site admin) has pinned your [comment]({comment.shortlink})"
send_repeatable_notification(comment.author_id, message) send_repeatable_notification(comment.author_id, message)
c = comment c = comment
@ -1377,7 +1377,7 @@ def unsticky_comment(cid, v):
g.db.add(ma) g.db.add(ma)
if v.id != comment.author_id: if v.id != comment.author_id:
message = f"@{v.username} (Admin) has unpinned your [comment]({comment.shortlink})" message = f"@{v.username} (a site admin) has unpinned your [comment]({comment.shortlink})"
send_repeatable_notification(comment.author_id, message) send_repeatable_notification(comment.author_id, message)
cleanup = g.db.query(Comment).filter_by(stickied_child_id=comment.id).all() cleanup = g.db.query(Comment).filter_by(stickied_child_id=comment.id).all()

View File

@ -152,11 +152,11 @@ def approve_marsey(v, name):
g.db.add(author) g.db.add(author)
if v.id != author.id: if v.id != author.id:
msg = f"@{v.username} (Admin) has approved a marsey you made: :{marsey.name}:\nYou have received 250 coins as a reward!" msg = f"@{v.username} (a site admin) has approved a marsey you made: :{marsey.name}:\nYou have received 250 coins as a reward!"
send_repeatable_notification(author.id, msg) send_repeatable_notification(author.id, msg)
if v.id != marsey.submitter_id and author.id != marsey.submitter_id: if v.id != marsey.submitter_id and author.id != marsey.submitter_id:
msg = f"@{v.username} (Admin) has approved a marsey you submitted: :{marsey.name}:" msg = f"@{v.username} (a site admin) has approved a marsey you submitted: :{marsey.name}:"
send_repeatable_notification(marsey.submitter_id, msg) send_repeatable_notification(marsey.submitter_id, msg)
marsey.submitter_id = None marsey.submitter_id = None
@ -307,11 +307,11 @@ def approve_hat(v, name):
if v.id != author.id: if v.id != author.id:
msg = f"@{v.username} (Admin) has approved a hat you made: '{hat.name}'" msg = f"@{v.username} (a site admin) has approved a hat you made: '{hat.name}'"
send_repeatable_notification(author.id, msg) send_repeatable_notification(author.id, msg)
if v.id != hat.submitter_id and author.id != hat.submitter_id: if v.id != hat.submitter_id and author.id != hat.submitter_id:
msg = f"@{v.username} (Admin) has approved a hat you submitted: '{hat.name}'" msg = f"@{v.username} (a site admin) has approved a hat you submitted: '{hat.name}'"
send_repeatable_notification(hat.submitter_id, msg) send_repeatable_notification(hat.submitter_id, msg)
hat.submitter_id = None hat.submitter_id = None

View File

@ -115,7 +115,7 @@ def login_post(v:Optional[User]):
def log_failed_admin_login_attempt(account:User, type:str): def log_failed_admin_login_attempt(account:User, type:str):
if not account or account.admin_level < PERMS['SITE_WARN_ON_INVALID_AUTH']: return if not account or account.admin_level < PERMS['SITE_WARN_ON_INVALID_AUTH']: return
ip = get_CF() ip = get_CF()
print(f"Admin user from {ip} failed to login to account @{account.user_name} (invalid {type})") print(f"A site admin from {ip} failed to login to account @{account.user_name} (invalid {type})")
t = time.strftime("%d/%B/%Y %H:%M:%S UTC", time.gmtime(time.time())) t = time.strftime("%d/%B/%Y %H:%M:%S UTC", time.gmtime(time.time()))
log_file(f"{t}, {ip}, {account.username}, {type}", "admin_failed_logins.log") log_file(f"{t}, {ip}, {account.username}, {type}", "admin_failed_logins.log")

View File

@ -156,7 +156,7 @@ def admin_app_approve(v, aid):
g.db.add(new_auth) g.db.add(new_auth)
send_repeatable_notification(user.id, f"@{v.username} (Admin) has approved your application `{app.app_name}`. Here's your access token: `{access_token}`\nPlease check the guide [here](/api) if you don't know what to do next!") send_repeatable_notification(user.id, f"@{v.username} (a site admin) has approved your application `{app.app_name}`. Here's your access token: `{access_token}`\nPlease check the guide [here](/api) if you don't know what to do next!")
ma = ModAction( ma = ModAction(
kind="approve_app", kind="approve_app",
@ -179,7 +179,7 @@ def admin_app_revoke(v, aid):
for auth in g.db.query(ClientAuth).filter_by(oauth_client=app.id).all(): g.db.delete(auth) for auth in g.db.query(ClientAuth).filter_by(oauth_client=app.id).all(): g.db.delete(auth)
if v.id != app.author.id: if v.id != app.author.id:
send_repeatable_notification(app.author.id, f"@{v.username} (Admin) has revoked your application `{app.app_name}`.") send_repeatable_notification(app.author.id, f"@{v.username} (a site admin) has revoked your application `{app.app_name}`.")
g.db.delete(app) g.db.delete(app)
@ -205,7 +205,7 @@ def admin_app_reject(v, aid):
for auth in g.db.query(ClientAuth).filter_by(oauth_client=app.id).all(): g.db.delete(auth) for auth in g.db.query(ClientAuth).filter_by(oauth_client=app.id).all(): g.db.delete(auth)
if v.id != app.author.id: if v.id != app.author.id:
send_repeatable_notification(app.author.id, f"@{v.username} (Admin) has rejected your application `{app.app_name}`.") send_repeatable_notification(app.author.id, f"@{v.username} (a site admin) has rejected your application `{app.app_name}`.")
g.db.delete(app) g.db.delete(app)

View File

@ -908,7 +908,7 @@ def mark_post_nsfw(pid, v):
target_submission_id = post.id, target_submission_id = post.id,
) )
g.db.add(ma) g.db.add(ma)
send_repeatable_notification(post.author_id, f"@{v.username} (Admin) has marked [{post.title}](/post/{post.id}) as +18") send_repeatable_notification(post.author_id, f"@{v.username} (a site admin) has marked [{post.title}](/post/{post.id}) as +18")
return {"message": "Post has been marked as +18!"} return {"message": "Post has been marked as +18!"}
@ -942,7 +942,7 @@ def unmark_post_nsfw(pid, v):
target_submission_id = post.id, target_submission_id = post.id,
) )
g.db.add(ma) g.db.add(ma)
send_repeatable_notification(post.author_id, f"@{v.username} (Admin) has unmarked [{post.title}](/post/{post.id}) as +18") send_repeatable_notification(post.author_id, f"@{v.username} (a site admin) has unmarked [{post.title}](/post/{post.id}) as +18")
return {"message": "Post has been unmarked as +18!"} return {"message": "Post has been unmarked as +18!"}
@ -1006,7 +1006,7 @@ def set_new_sort(post_id:int, v:User):
target_submission_id = post.id, target_submission_id = post.id,
) )
g.db.add(ma) g.db.add(ma)
send_repeatable_notification(post.author_id, f"@{v.username} (Admin) has changed the the default sorting of comments on [{post.title}](/post/{post.id}) to `new`") send_repeatable_notification(post.author_id, f"@{v.username} (a site admin) has changed the the default sorting of comments on [{post.title}](/post/{post.id}) to `new`")
return {"message": f"Changed the the default sorting of comments on this post to 'new'"} return {"message": f"Changed the the default sorting of comments on this post to 'new'"}
@ -1027,7 +1027,7 @@ def unset_new_sort(post_id:int, v:User):
target_submission_id = post.id, target_submission_id = post.id,
) )
g.db.add(ma) g.db.add(ma)
send_repeatable_notification(post.author_id, f"@{v.username} (Admin) has changed the the default sorting of comments on [{post.title}](/post/{post.id}) to `hot`") send_repeatable_notification(post.author_id, f"@{v.username} (a site admin) has changed the the default sorting of comments on [{post.title}](/post/{post.id}) to `hot`")
return {"message": f"Changed the the default sorting of comments on this post to 'hot'"} return {"message": f"Changed the the default sorting of comments on this post to 'hot'"}

View File

@ -37,7 +37,7 @@ def flag_post(pid, v):
_note=f'"{post.flair}"' _note=f'"{post.flair}"'
) )
g.db.add(ma) g.db.add(ma)
position = 'Admin' position = 'a site admin'
else: else:
ma = SubAction( ma = SubAction(
sub=post.sub, sub=post.sub,
@ -47,7 +47,7 @@ def flag_post(pid, v):
_note=f'"{post.flair}"' _note=f'"{post.flair}"'
) )
g.db.add(ma) g.db.add(ma)
position = f'/h/{post.sub} Mod' position = f'a /h/{post.sub} mod'
if v.id != post.author_id: if v.id != post.author_id:
message = f'@{v.username} ({position}) has flaired [{post.title}]({post.shortlink}) with the flair: `"{og_flair}"`' message = f'@{v.username} ({position}) has flaired [{post.title}]({post.shortlink}) with the flair: `"{og_flair}"`'
@ -184,9 +184,20 @@ def move_post(post:Submission, v:User, reason:str) -> Union[bool, str]:
) )
g.db.add(ma) g.db.add(ma)
if v.admin_level >= PERMS['POST_COMMENT_MODERATION']: position = 'Admin' if v.admin_level >= PERMS['POST_COMMENT_MODERATION']: position = 'a site admin'
else: position = f'/h/{sub_from} Mod' else: position = f'a /h/{sub_from} mod'
message = f"@{v.username} ({position}) has moved [{post.title}]({post.shortlink}) to /h/{post.sub}"
if post.sub == None:
sub_to_in_notif = 'the main feed'
else:
sub_to_in_notif = f'/h/{post.sub}'
if sub_from == None:
sub_from_in_notif = 'the main feed'
else:
sub_from_in_notif = f'/h/{sub_from}'
message = f"@{v.username} ({position}) has moved [{post.title}]({post.shortlink}) from {sub_from_in_notif} to {sub_to_in_notif}"
send_repeatable_notification(post.author_id, message) send_repeatable_notification(post.author_id, message)
cache.delete_memoized(frontlist) cache.delete_memoized(frontlist)

View File

@ -136,7 +136,7 @@ def live_add(v):
g.db.add(streamer) g.db.add(streamer)
g.db.flush() g.db.flush()
if v.id != KIPPY_ID: if v.id != KIPPY_ID:
send_repeatable_notification(KIPPY_ID, f"@{v.username} (Admin) has added a [new YouTube channel](https://www.youtube.com/channel/{streamer.id})") send_repeatable_notification(KIPPY_ID, f"@{v.username} (a site admin) has added a [new YouTube channel](https://www.youtube.com/channel/{streamer.id})")
processed = process_streamer(id) processed = process_streamer(id)
if processed: if processed:
@ -159,7 +159,7 @@ def live_remove(v):
streamer = g.db.get(Streamer, id) streamer = g.db.get(Streamer, id)
if streamer: if streamer:
if v.id != KIPPY_ID: if v.id != KIPPY_ID:
send_repeatable_notification(KIPPY_ID, f"@{v.username} (Admin) has removed a [YouTube channel](https://www.youtube.com/channel/{streamer.id})") send_repeatable_notification(KIPPY_ID, f"@{v.username} (a site admin) has removed a [YouTube channel](https://www.youtube.com/channel/{streamer.id})")
g.db.delete(streamer) g.db.delete(streamer)
live = cache.get('live') or [] live = cache.get('live') or []
@ -171,4 +171,4 @@ def live_remove(v):
if live: cache.set('live', live) if live: cache.set('live', live)
if offline: cache.set('offline', offline) if offline: cache.set('offline', offline)
return redirect('/live') return redirect('/live')

View File

@ -363,7 +363,7 @@ def kick(v:User, pid):
g.db.add(ma) g.db.add(ma)
if v.id != post.author_id: if v.id != post.author_id:
message = f"@{v.username} (/h/{old} Mod) has moved [{post.title}]({post.shortlink}) from /h/{old} to the main feed!" message = f"@{v.username} (a /h/{old} mod) has moved [{post.title}]({post.shortlink}) from /h/{old} to the main feed!"
send_repeatable_notification(post.author_id, message) send_repeatable_notification(post.author_id, message)
g.db.add(post) g.db.add(post)
@ -614,7 +614,7 @@ def hole_pin(v:User, pid):
g.db.add(p) g.db.add(p)
if v.id != p.author_id: if v.id != p.author_id:
message = f"@{v.username} (/h/{p.sub} Mod) has pinned [{p.title}]({p.shortlink}) in /h/{p.sub}" message = f"@{v.username} (a /h/{p.sub} mod) has pinned [{p.title}]({p.shortlink}) in /h/{p.sub}"
send_repeatable_notification(p.author_id, message) send_repeatable_notification(p.author_id, message)
ma = SubAction( ma = SubAction(
@ -640,7 +640,7 @@ def hole_unpin(v:User, pid):
g.db.add(p) g.db.add(p)
if v.id != p.author_id: if v.id != p.author_id:
message = f"@{v.username} (/h/{p.sub} Mod) has unpinned [{p.title}]({p.shortlink}) in /h/{p.sub}" message = f"@{v.username} (a /h/{p.sub} mod) has unpinned [{p.title}]({p.shortlink}) in /h/{p.sub}"
send_repeatable_notification(p.author_id, message) send_repeatable_notification(p.author_id, message)
ma = SubAction( ma = SubAction(
@ -707,7 +707,7 @@ def mod_pin(cid, v):
g.db.add(ma) g.db.add(ma)
if v.id != comment.author_id: if v.id != comment.author_id:
message = f"@{v.username} (/h/{comment.post.sub} Mod) has pinned your [comment]({comment.shortlink})" message = f"@{v.username} (a /h/{comment.post.sub} mod) has pinned your [comment]({comment.shortlink})"
send_repeatable_notification(comment.author_id, message) send_repeatable_notification(comment.author_id, message)
return {"message": "Comment pinned!"} return {"message": "Comment pinned!"}
@ -733,7 +733,7 @@ def mod_unpin(cid, v):
g.db.add(ma) g.db.add(ma)
if v.id != comment.author_id: if v.id != comment.author_id:
message = f"@{v.username} (/h/{comment.post.sub} Mod) has unpinned your [comment]({comment.shortlink})" message = f"@{v.username} (a /h/{comment.post.sub} mod) has unpinned your [comment]({comment.shortlink})"
send_repeatable_notification(comment.author_id, message) send_repeatable_notification(comment.author_id, message)
return {"message": "Comment unpinned!"} return {"message": "Comment unpinned!"}