From 2619be42441001ae3ee7dcace11003c2b793bab0 Mon Sep 17 00:00:00 2001 From: Logan Hanks Date: Wed, 30 Jan 2013 16:49:05 -0800 Subject: [PATCH] Add moderator permission for access (bans, contributors, etc.). --- r2/r2/controllers/api.py | 5 +++-- r2/r2/controllers/front.py | 20 ++++++++++++-------- r2/r2/lib/pages/pages.py | 22 ++++++++++++---------- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/r2/r2/controllers/api.py b/r2/r2/controllers/api.py index f55647d0d..c6d5c5a69 100755 --- a/r2/r2/controllers/api.py +++ b/r2/r2/controllers/api.py @@ -594,7 +594,8 @@ class ApiController(RedditController, OAuth2ResourceController): # for the privilege change to succeed. victim = iuser or nuser if (not c.user_is_admin - and (type in self._sr_friend_types and not container.is_moderator(c.user))): + and (type in self._sr_friend_types + and not container.is_moderator_with_perms(c.user, 'access'))): abort(403, 'forbidden') if (type == 'moderator' and not (c.user_is_admin or container.can_demod(c.user, victim))): @@ -688,7 +689,7 @@ class ApiController(RedditController, OAuth2ResourceController): # for the privilege change to succeed. if (not c.user_is_admin and type in self._sr_friend_types - and (not container.is_moderator(c.user) + and (not container.is_moderator_with_perms(c.user, 'access') or c.user._spam)): if c.user._spam: return diff --git a/r2/r2/controllers/front.py b/r2/r2/controllers/front.py index 95e9f2842..fb092c2f1 100755 --- a/r2/r2/controllers/front.py +++ b/r2/r2/controllers/front.py @@ -609,19 +609,23 @@ class FrontController(RedditController, OAuth2ResourceController): pane.append(CreateSubreddit(site = c.site)) elif location == 'moderators': pane = ModList(editable=is_unlimited_moderator) - elif is_moderator and location == 'banned': - pane = BannedList(editable = is_moderator) - elif is_moderator and location == 'wikibanned': - pane = WikiBannedList(editable = is_moderator) - elif is_moderator and location == 'wikicontributors': - pane = WikiMayContributeList(editable = is_moderator) + elif is_moderator_with_perms('access') and location == 'banned': + pane = BannedList(editable=is_moderator_with_perms('access')) + elif is_moderator_with_perms('access') and location == 'wikibanned': + pane = WikiBannedList(editable=is_moderator_with_perms('access')) + elif (is_moderator_with_perms('access') + and location == 'wikicontributors'): + pane = WikiMayContributeList( + editable=is_moderator_with_perms('access')) elif (location == 'contributors' and # On public reddits, only moderators can see the whitelist. # On private reddits, all contributors can see each other. (c.site.type != 'public' or (c.user_is_loggedin and - (c.site.is_moderator(c.user) or c.user_is_admin)))): - pane = ContributorList(editable = is_moderator) + (c.site.is_moderator_with_perms(c.user, 'access') + or c.user_is_admin)))): + pane = ContributorList( + editable=is_moderator_with_perms('access')) elif (location == 'stylesheet' and c.site.can_change_stylesheet(c.user) and not g.css_killswitch): diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py index b73f2f1bc..2b2eea810 100755 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -256,16 +256,17 @@ class Reddit(Templated): css_class="moderator-mail")) if is_single_subreddit: - buttons.append(NamedButton("moderators", - css_class="reddit-moderators")) + if c.site.is_moderator_with_perms(c.user, 'access'): + buttons.append(NamedButton("moderators", + css_class="reddit-moderators")) - if c.site.type != "public": - buttons.append(NamedButton("contributors", - css_class="reddit-contributors")) - else: - buttons.append(NavButton(menu.contributors, - "contributors", - css_class="reddit-contributors")) + if c.site.type != "public": + buttons.append(NamedButton("contributors", + css_class="reddit-contributors")) + else: + buttons.append(NavButton(menu.contributors, + "contributors", + css_class="reddit-contributors")) buttons.append(NamedButton("traffic", css_class="reddit-traffic")) @@ -275,7 +276,8 @@ class Reddit(Templated): NamedButton("spam", css_class="reddit-spam")] if is_single_subreddit: - buttons.append(NamedButton("banned", css_class="reddit-ban")) + if c.site.is_moderator_with_perms(c.user, 'access'): + buttons.append(NamedButton("banned", css_class="reddit-ban")) if c.site.is_moderator_with_perms(c.user, 'flair'): buttons.append(NamedButton("flair", css_class="reddit-flair"))