diff --git a/files/helpers/config/const.py b/files/helpers/config/const.py index ece8ba409..aae143014 100644 --- a/files/helpers/config/const.py +++ b/files/helpers/config/const.py @@ -475,6 +475,7 @@ PERMS = { # Minimum admin_level to perform action. 'BLACKJACK_NOTIFICATIONS': 4, 'IGNORE_BADGE_BLACKLIST': 4, 'PROGSTACK': 4, + 'UNDO_AWARD_PINS': 4, 'SEE_GHOST_VOTES': 5, 'MODS_EVERY_HOLE': 5, } diff --git a/files/routes/admin.py b/files/routes/admin.py index 8fec7cb22..dbc6e5e9f 100644 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -1379,8 +1379,11 @@ def distinguish_post(post_id, v): @admin_level_required(PERMS['POST_COMMENT_MODERATION']) def sticky_post(post_id, v): post = get_post(post_id) - if post.is_banned: abort(403, "Can't sticky removed posts!") - if FEATURES['AWARDS'] and post.stickied and post.stickied.endswith(PIN_AWARD_TEXT): + + if post.is_banned: + abort(403, "Can't sticky removed posts!") + + if FEATURES['AWARDS'] and post.stickied and post.stickied.endswith(PIN_AWARD_TEXT) and v.admin_level < PERMS["UNDO_PIN_AWARDS"]: abort(403, "Can't pin award pins!") pins = g.db.query(Submission).filter(Submission.stickied != None, Submission.is_banned == False).count() @@ -1421,8 +1424,11 @@ def sticky_post(post_id, v): def unsticky_post(post_id, v): post = get_post(post_id) if post.stickied: - if FEATURES['AWARDS'] and post.stickied.endswith(PIN_AWARD_TEXT): abort(403, "Can't unpin award pins!") - if post.author_id == LAWLZ_ID and post.stickied_utc and SITE_NAME == 'rDrama': abort(403, "Can't unpin lawlzposts!") + if FEATURES['AWARDS'] and post.stickied.endswith(PIN_AWARD_TEXT) and v.admin_level < PERMS["UNDO_PIN_AWARDS"]: + abort(403, "Can't unpin award pins!") + + if post.author_id == LAWLZ_ID and post.stickied_utc and SITE_NAME == 'rDrama': + abort(403, "Can't unpin lawlzposts!") post.stickied = None post.stickied_utc = None @@ -1446,9 +1452,12 @@ def unsticky_post(post_id, v): @admin_level_required(PERMS['POST_COMMENT_MODERATION']) def sticky_comment(cid, v): comment = get_comment(cid, v=v) + if comment.is_banned: abort(403, "Can't sticky removed comments!") + if FEATURES['AWARDS'] and comment.stickied and comment.stickied.endswith(PIN_AWARD_TEXT) and v.admin_level < PERMS["UNDO_PIN_AWARDS"]: + abort(403, "Can't pin award pins!") if not comment.stickied: comment.stickied = v.username @@ -1481,7 +1490,8 @@ def unsticky_comment(cid, v): comment = get_comment(cid, v=v) if comment.stickied: - if FEATURES['AWARDS'] and comment.stickied.endswith(PIN_AWARD_TEXT): abort(403, "Can't unpin award pins!") + if FEATURES['AWARDS'] and comment.stickied.endswith(PIN_AWARD_TEXT) and v.admin_level < PERMS["UNDO_PIN_AWARDS"]: + abort(403, "Can't unpin award pins!") comment.stickied = None g.db.add(comment)