Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Make submission page's subreddit auto-completion dropdown obey over18 state #747

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 4 additions & 3 deletions r2/r2/controllers/api.py
Expand Up @@ -3070,11 +3070,12 @@ def POST_tb_commentspanel_hide(self):
c.user.pref_frame_commentspanel = False
c.user._commit()

@json_validate(query = VPrintable('query', max_length = 50))
def POST_search_reddit_names(self, responder, query):
@json_validate(query=VPrintable('query', max_length=50),
include_over_18=VBoolean('include_over_18', default=True))
def POST_search_reddit_names(self, responder, query, include_over_18):
names = []
if query:
names = search_reddits(query)
names = search_reddits(query, include_over_18)

return {'names': names}

Expand Down
2 changes: 1 addition & 1 deletion r2/r2/lib/pages/pages.py
Expand Up @@ -2198,7 +2198,7 @@ def __init__(self, captcha = None, url = '', title= '', text = '', selftext = ''

self.formtabs_menu = JsNavMenu(buttons, type = 'formtab')

self.sr_searches = simplejson.dumps(popular_searches())
self.sr_searches = simplejson.dumps(popular_searches(include_over_18=c.over18))

self.resubmit = resubmit
if c.default_sr:
Expand Down
15 changes: 9 additions & 6 deletions r2/r2/lib/subreddit_search.py
Expand Up @@ -46,32 +46,35 @@ def load_all_reddits():
prefix = name[:i + 1]
names = query_cache.setdefault(prefix, [])
if len(names) < 10:
names.append(sr.name)
names.append((sr.name, sr.over_18))

for name_prefix, subreddits in query_cache.iteritems():
SubredditsByPartialName._set_values(name_prefix, {'srs': subreddits})
SubredditsByPartialName._set_values(name_prefix, {'tups': subreddits})

def search_reddits(query):
def search_reddits(query, include_over_18=True):
query = str(query.lower())

try:
result = SubredditsByPartialName._byID(query)
return result.srs
return [name for (name, over_18) in getattr(result, 'tups', [])
if not over_18 or include_over_18]
except tdb_cassandra.NotFound:
return []

@memoize('popular_searches', time = 3600)
def popular_searches():
def popular_searches(include_over_18=True):
top_reddits = Subreddit._query(Subreddit.c.type == 'public',
sort = desc('_downs'),
limit = 100,
data = True)
top_searches = {}
for sr in top_reddits:
if sr.over_18 and not include_over_18:
continue
name = sr.name.lower()
for i in xrange(min(len(name), 3)):
query = name[:i + 1]
r = search_reddits(query)
r = search_reddits(query, include_over_18)
top_searches[query] = r
return top_searches

1 change: 1 addition & 0 deletions r2/r2/lib/template_helpers.py
Expand Up @@ -150,6 +150,7 @@ def js_config(extra_config=None):
"clicktracker_url": g.clicktracker_url,
"uitracker_url": g.uitracker_url,
"static_root": static(''),
"over_18": bool(c.over18),
}

if extra_config:
Expand Down
2 changes: 1 addition & 1 deletion r2/r2/public/static/js/reddit.js
Expand Up @@ -638,7 +638,7 @@ function sr_search(query) {
query = query.toLowerCase();
var cache = sr_cache();
if (!cache[query]) {
$.request('search_reddit_names.json', {query: query},
$.request('search_reddit_names.json', {query: query, include_over_18: r.config.over_18},
function (r) {
cache[query] = r['names'];
update_dropdown(r['names']);
Expand Down