forked from MarseyWorld/MarseyWorld
re-add revert admin actions function and also fix a bug with it
parent
345608bcf3
commit
558ee805ec
|
@ -165,6 +165,7 @@ PERMS = { # Minimum admin_level to perform action.
|
||||||
'ADMIN_ADD': 3, # note: explicitly disabled on rDrama
|
'ADMIN_ADD': 3, # note: explicitly disabled on rDrama
|
||||||
'ADMIN_REMOVE': 3,
|
'ADMIN_REMOVE': 3,
|
||||||
'ADMIN_ADD_PERM_LEVEL': 2, # permission level given when user added via site
|
'ADMIN_ADD_PERM_LEVEL': 2, # permission level given when user added via site
|
||||||
|
'ADMIN_ACTIONS_REVERT': 3,
|
||||||
'ADMIN_MOP_VISIBLE': 2,
|
'ADMIN_MOP_VISIBLE': 2,
|
||||||
'ADMIN_HOME_VISIBLE': 2,
|
'ADMIN_HOME_VISIBLE': 2,
|
||||||
'DOMAINS_BAN': 3,
|
'DOMAINS_BAN': 3,
|
||||||
|
|
|
@ -247,6 +247,56 @@ def distribute(v, option_id):
|
||||||
|
|
||||||
return {"message": f"Each winner has received {coinsperperson} coins!"}
|
return {"message": f"Each winner has received {coinsperperson} coins!"}
|
||||||
|
|
||||||
|
@app.post("/@<username>/revert_actions")
|
||||||
|
@limiter.limit("1/second;30/minute;200/hour;1000/day")
|
||||||
|
@admin_level_required(PERMS['ADMIN_ACTIONS_REVERT'])
|
||||||
|
def revert_actions(v, username):
|
||||||
|
user = get_user(username)
|
||||||
|
|
||||||
|
ma = ModAction(
|
||||||
|
kind="revert",
|
||||||
|
user_id=v.id,
|
||||||
|
target_user_id=user.id
|
||||||
|
)
|
||||||
|
g.db.add(ma)
|
||||||
|
|
||||||
|
cutoff = int(time.time()) - 86400
|
||||||
|
|
||||||
|
posts = [x[0] for x in g.db.query(ModAction.target_submission_id).filter(ModAction.user_id == user.id, ModAction.created_utc > cutoff, ModAction.kind == 'ban_post').all()]
|
||||||
|
posts = g.db.query(Submission).filter(Submission.id.in_(posts)).all()
|
||||||
|
|
||||||
|
comments = [x[0] for x in g.db.query(ModAction.target_comment_id).filter(ModAction.user_id == user.id, ModAction.created_utc > cutoff, ModAction.kind == 'ban_comment').all()]
|
||||||
|
comments = g.db.query(Comment).filter(Comment.id.in_(comments)).all()
|
||||||
|
|
||||||
|
for item in posts + comments:
|
||||||
|
item.is_banned = False
|
||||||
|
item.ban_reason = None
|
||||||
|
item.is_approved = v.id
|
||||||
|
g.db.add(item)
|
||||||
|
|
||||||
|
users = (x[0] for x in g.db.query(ModAction.target_user_id).filter(ModAction.user_id == user.id, ModAction.created_utc > cutoff, ModAction.kind.in_(('shadowban', 'ban_user'))).all())
|
||||||
|
users = g.db.query(User).filter(User.id.in_(users)).all()
|
||||||
|
|
||||||
|
for user in users:
|
||||||
|
user.shadowbanned = None
|
||||||
|
user.unban_utc = 0
|
||||||
|
user.ban_reason = None
|
||||||
|
if user.is_banned:
|
||||||
|
user.is_banned = 0
|
||||||
|
send_repeatable_notification(user.id, f"@{v.username} has unbanned you!")
|
||||||
|
g.db.add(user)
|
||||||
|
|
||||||
|
for u in user.alts:
|
||||||
|
u.shadowbanned = None
|
||||||
|
u.unban_utc = 0
|
||||||
|
u.ban_reason = None
|
||||||
|
if u.is_banned:
|
||||||
|
u.is_banned = 0
|
||||||
|
send_repeatable_notification(u.id, f"@{v.username} has unbanned you!")
|
||||||
|
g.db.add(u)
|
||||||
|
|
||||||
|
return {"message": f"@{user.username}'s admin actions has been reverted!"}
|
||||||
|
|
||||||
@app.post("/@<username>/club_allow")
|
@app.post("/@<username>/club_allow")
|
||||||
@limiter.limit("1/second;30/minute;200/hour;1000/day")
|
@limiter.limit("1/second;30/minute;200/hour;1000/day")
|
||||||
@admin_level_required(PERMS['USER_CLUB_ALLOW_BAN'])
|
@admin_level_required(PERMS['USER_CLUB_ALLOW_BAN'])
|
||||||
|
|
|
@ -227,7 +227,9 @@
|
||||||
<a id="unadmin" class="{% if u.admin_level < 1 %}d-none{% endif %} btn btn-primary" href="javascript:void(0)" onclick="post_toast(this,'/@{{u.username}}/remove_admin','admin','unadmin','d-none')">Remove admin</a>
|
<a id="unadmin" class="{% if u.admin_level < 1 %}d-none{% endif %} btn btn-primary" href="javascript:void(0)" onclick="post_toast(this,'/@{{u.username}}/remove_admin','admin','unadmin','d-none')">Remove admin</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
{% if v.admin_level >= PERMS['ADMIN_ACTIONS_REVERT'] and u.admin_level %}
|
||||||
|
<a class="btn btn-primary" role="button" onclick="post_toast(this,'/@{{u.username}}/revert_actions')">Revert admin actions</a>
|
||||||
|
{% endif %}
|
||||||
<form class="d-none toggleable" id="message" action="/@{{u.username}}/message" onsubmit="submitFormAjax(event)">
|
<form class="d-none toggleable" id="message" action="/@{{u.username}}/message" onsubmit="submitFormAjax(event)">
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
|
@ -493,7 +495,9 @@
|
||||||
{% if v.admin_level >= PERMS['ADMIN_REMOVE'] %}
|
{% if v.admin_level >= PERMS['ADMIN_REMOVE'] %}
|
||||||
<a id="unadmin2" class="{% if u.admin_level < 1 %}d-none{% endif %} btn btn-primary" href="javascript:void(0)" onclick="post_toast(this,'/@{{u.username}}/remove_admin','admin2','unadmin2','d-none')">Remove admin</a>
|
<a id="unadmin2" class="{% if u.admin_level < 1 %}d-none{% endif %} btn btn-primary" href="javascript:void(0)" onclick="post_toast(this,'/@{{u.username}}/remove_admin','admin2','unadmin2','d-none')">Remove admin</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if v.admin_level >= PERMS['ADMIN_ACTIONS_REVERT'] and u.admin_level %}
|
||||||
|
<a class="btn btn-primary" role="button" onclick="post_toast(this,'/@{{u.username}}/revert_actions')">Revert admin actions</a>
|
||||||
|
{% endif %}
|
||||||
<form class="d-none toggleable" id='message-mobile' action="/@{{u.username}}/message" onsubmit="submitFormAjax(event)">
|
<form class="d-none toggleable" id='message-mobile' action="/@{{u.username}}/message" onsubmit="submitFormAjax(event)">
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
|
|
Loading…
Reference in New Issue