From 02bd09ae53aee4562e2bc58f81c19dd82379d1e5 Mon Sep 17 00:00:00 2001 From: Jason Harvey Date: Fri, 8 Feb 2013 17:33:37 -0800 Subject: [PATCH] Adjust how and when builder shows reports and big_modbuttons. Always show big_modbuttons on spamlistings (report listing, mod listing, etc). Only display reports if ignore_reports is False or the user is admin. --- r2/r2/controllers/front.py | 4 +++- r2/r2/models/builder.py | 13 ++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/r2/r2/controllers/front.py b/r2/r2/controllers/front.py index 80577fff7..9902f084b 100755 --- a/r2/r2/controllers/front.py +++ b/r2/r2/controllers/front.py @@ -548,7 +548,9 @@ class FrontController(RedditController, OAuth2ResourceController): num = num, after = after, keep_fn = keep_fn, count = count, reverse = reverse, - wrap = ListingController.builder_wrapper) + wrap = ListingController.builder_wrapper, + spam_listing = True, + ) listing = LinkListing(builder) pane = listing.listing() diff --git a/r2/r2/models/builder.py b/r2/r2/models/builder.py index 2f2462cd5..89a8c4b3d 100755 --- a/r2/r2/models/builder.py +++ b/r2/r2/models/builder.py @@ -49,10 +49,11 @@ EXTRA_FACTOR = 1.5 MAX_RECURSION = 10 class Builder(object): - def __init__(self, wrap=Wrapped, keep_fn=None, stale=True): + def __init__(self, wrap=Wrapped, keep_fn=None, stale=True, spam_listing=False): self.stale = stale self.wrap = wrap self.keep_fn = keep_fn + self.spam_listing = spam_listing def keep_item(self, item): if self.keep_fn: @@ -221,7 +222,7 @@ class Builder(object): w.show_reports = False w.show_spam = False w.can_ban = False - w.use_big_modbuttons = False + w.use_big_modbuttons = self.spam_listing if (c.user_is_admin or (user @@ -249,7 +250,8 @@ class Builder(object): w._spam = False w.use_big_modbuttons = False - elif getattr(item, 'reported', 0) > 0: + elif (getattr(item, 'reported', 0) > 0 + and (not getattr(item, 'ignore_reports', False) or c.user_is_admin)): w.show_reports = True w.use_big_modbuttons = True @@ -280,8 +282,9 @@ class Builder(object): return True class QueryBuilder(Builder): - def __init__(self, query, wrap=Wrapped, keep_fn=None, skip=False, **kw): - Builder.__init__(self, wrap=wrap, keep_fn=keep_fn) + def __init__(self, query, wrap=Wrapped, keep_fn=None, skip=False, + spam_listing=False, **kw): + Builder.__init__(self, wrap=wrap, keep_fn=keep_fn, spam_listing=spam_listing) self.query = query self.skip = skip self.num = kw.get('num')