mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-01-27 15:58:06 -05:00
Submit page subreddit suggestion obeys user's over_18 preference.
This commit is contained in:
@@ -3075,11 +3075,12 @@ class ApiController(RedditController, OAuth2ResourceController):
|
||||
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}
|
||||
|
||||
|
||||
@@ -2233,7 +2233,7 @@ class NewLink(Templated):
|
||||
|
||||
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:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -148,6 +148,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:
|
||||
|
||||
@@ -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']);
|
||||
|
||||
Reference in New Issue
Block a user