Some subreddits incorrectly filtered from search

Don't remove Subreddits whose creators deleted
their accounts from the search results
This commit is contained in:
Keith Mitchell
2012-06-15 10:40:39 -07:00
parent 6e301e220d
commit 659f0801cc
2 changed files with 13 additions and 5 deletions

View File

@@ -692,8 +692,9 @@ class FrontController(RedditController):
"""Search reddits by title and description."""
q = SubredditSearchQuery(query)
num, t, spane = self._search(q, num = num, reverse = reverse,
after = after, count = count)
num, t, spane = self._search(q, num=num, reverse=reverse,
after=after, count=count,
skip_deleted_authors=False)
res = SubredditsPage(content=spane,
prev_search = query,
@@ -770,14 +771,16 @@ class FrontController(RedditController):
except SearchException + (socket.error,) as e:
return self.search_fail(e)
def _search(self, query_obj, num, after, reverse, count=0):
def _search(self, query_obj, num, after, reverse, count=0,
skip_deleted_authors=True):
"""Helper function for interfacing with search. Basically a
thin wrapper for SearchBuilder."""
builder = SearchBuilder(query_obj,
after = after, num = num, reverse = reverse,
count = count,
wrap = ListingController.builder_wrapper)
wrap = ListingController.builder_wrapper,
skip_deleted_authors=skip_deleted_authors)
listing = LinkListing(builder, show_nums=True)

View File

@@ -460,6 +460,10 @@ class IDBuilder(QueryBuilder):
return done, new_items
class SearchBuilder(IDBuilder):
def __init__(self, query, wrap=Wrapped, keep_fn=None, skip=False,
skip_deleted_authors=True, **kw):
IDBuilder.__init__(self, query, wrap, keep_fn, skip, **kw)
self.skip_deleted_authors = skip_deleted_authors
def init_query(self):
self.skip = True
@@ -482,7 +486,8 @@ class SearchBuilder(IDBuilder):
# TODO: Consider a flag to disable this (and see listingcontroller.py)
if item._spam or item._deleted:
return False
elif getattr(item, "author", None) and item.author._deleted:
elif (self.skip_deleted_authors and
getattr(item, "author", None) and item.author._deleted):
return False
else:
return True