From 31a2ee07ff6feaa7e9a58aeca4701f54fdbc8b88 Mon Sep 17 00:00:00 2001 From: bsimpson63 Date: Wed, 10 Apr 2013 09:05:20 -0400 Subject: [PATCH] Exclude subscriptions from Random and RandomNSFW. --- r2/r2/controllers/reddit_base.py | 4 ++-- r2/r2/models/subreddit.py | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/r2/r2/controllers/reddit_base.py b/r2/r2/controllers/reddit_base.py index 91de0f19d..2b7f0d236 100644 --- a/r2/r2/controllers/reddit_base.py +++ b/r2/r2/controllers/reddit_base.py @@ -980,7 +980,7 @@ class RedditController(MinimalController): # random reddit trickery -- have to do this after the content lang is set if c.site == Random: - c.site = Subreddit.random_reddit() + c.site = Subreddit.random_reddit(user=c.user) redirect_to("/" + c.site.path.strip('/') + request.path) elif c.site == RandomSubscription: if c.user.gold: @@ -989,7 +989,7 @@ class RedditController(MinimalController): else: redirect_to('/gold/about') elif c.site == RandomNSFW: - c.site = Subreddit.random_reddit(over18=True) + c.site = Subreddit.random_reddit(over18=True, user=c.user) redirect_to("/" + c.site.path.strip('/') + request.path) if not request.path.startswith("/api/login/"): diff --git a/r2/r2/models/subreddit.py b/r2/r2/models/subreddit.py index 394a4bbe8..5bf643606 100644 --- a/r2/r2/models/subreddit.py +++ b/r2/r2/models/subreddit.py @@ -660,12 +660,15 @@ class Subreddit(Thing, Printable): return sr_ids + automatic_ids @classmethod - def random_reddit(cls, limit = 2500, over18 = False): + def random_reddit(cls, limit=2500, over18=False, user=None): srs = cls.top_lang_srs(c.content_langs, limit, filter_allow_top = False, over18 = over18, over18_only = over18, ids=True) + if user: + excludes = cls.user_subreddits(user, over18=over18, limit=None) + srs = list(set(srs) - set(excludes)) return (Subreddit._byID(random.choice(srs)) if srs else Subreddit._by_name(g.default_sr))