From 890916859fb1cd2a81bfb46167e07007d153e899 Mon Sep 17 00:00:00 2001 From: Logan Hanks Date: Wed, 30 Jan 2013 17:15:26 -0800 Subject: [PATCH] Add moderator permission for managing subreddit config. --- r2/r2/controllers/api.py | 10 +++++----- r2/r2/controllers/front.py | 2 +- r2/r2/lib/pages/pages.py | 3 ++- r2/r2/models/subreddit.py | 3 ++- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/r2/r2/controllers/api.py b/r2/r2/controllers/api.py index c6d5c5a69..57d5da9ca 100755 --- a/r2/r2/controllers/api.py +++ b/r2/r2/controllers/api.py @@ -1421,7 +1421,7 @@ class ApiController(RedditController, OAuth2ResourceController): # In order to avoid breaking functionality, this was done instead. prevstyle = request.post.get('prevstyle') if not report: - return self.abort(403,'forbidden') + return abort(403, 'forbidden') if report.errors: error_items = [ CssError(x).render(style='html') @@ -1494,7 +1494,7 @@ class ApiController(RedditController, OAuth2ResourceController): cssfilter.rendered_comment(comments)) @require_oauth2_scope("modconfig") - @validatedForm(VSrModerator(), + @validatedForm(VSrModerator(perms='config'), VModhash(), name = VCssName('img_name')) @api_doc(api_section.subreddits) @@ -1513,7 +1513,7 @@ class ApiController(RedditController, OAuth2ResourceController): details='del_image', description=name) @require_oauth2_scope("modconfig") - @validatedForm(VSrModerator(), + @validatedForm(VSrModerator(perms='config'), VModhash(), sponsor = VInt("sponsor", min = 0, max = 1)) @api_doc(api_section.subreddits) @@ -1555,7 +1555,7 @@ class ApiController(RedditController, OAuth2ResourceController): return "nothing to see here." @require_oauth2_scope("modconfig") - @validate(VSrModerator(), + @validate(VSrModerator(perms='config'), VModhash(), file = VLength('file', max_length=1024*500), name = VCssName("name"), @@ -1790,7 +1790,7 @@ class ApiController(RedditController, OAuth2ResourceController): changed(sr) #editting an existing reddit - elif sr.is_moderator(c.user) or c.user_is_admin: + elif sr.is_moderator_with_perms(c.user, 'config') or c.user_is_admin: if c.user_is_admin: sr.sponsorship_text = sponsor_text or "" diff --git a/r2/r2/controllers/front.py b/r2/r2/controllers/front.py index fb092c2f1..edf4f0a13 100755 --- a/r2/r2/controllers/front.py +++ b/r2/r2/controllers/front.py @@ -600,7 +600,7 @@ class FrontController(RedditController, OAuth2ResourceController): for perm in perms)) extension_handling = False - if is_moderator and location == 'edit': + if is_moderator_with_perms('config') and location == 'edit': pane = PaneStack() if created == 'true': pane.append(InfoBar(message = strings.sr_created)) diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py index 2b2eea810..dd0e4ee97 100755 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -246,7 +246,8 @@ class Reddit(Templated): buttons = [] is_single_subreddit = not isinstance(c.site, (ModSR, MultiReddit)) - if is_single_subreddit: + if (is_single_subreddit + and c.site.is_moderator_with_perms(c.user, 'config')): buttons.append(NavButton(menu.community_settings, css_class="reddit-edit", dest="edit")) diff --git a/r2/r2/models/subreddit.py b/r2/r2/models/subreddit.py index a6e49fadd..54fd4d606 100644 --- a/r2/r2/models/subreddit.py +++ b/r2/r2/models/subreddit.py @@ -442,7 +442,8 @@ class Subreddit(Thing, Printable): def can_change_stylesheet(self, user): if c.user_is_loggedin: - return c.user_is_admin or self.is_moderator(user) + return ( + c.user_is_admin or self.is_moderator_with_perms(user, 'config')) else: return False