本文整理汇总了Python中r2.models.Subreddit类的典型用法代码示例。如果您正苦于以下问题:Python Subreddit类的具体用法?Python Subreddit怎么用?Python Subreddit使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Subreddit类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self):
Wrapped.__init__(self)
my_reddits = []
sr_ids = Subreddit.user_subreddits(c.user if c.user_is_loggedin else None)
if sr_ids:
my_reddits = Subreddit._byID(sr_ids, True,
return_dict = False)
my_reddits.sort(key = lambda sr: sr.name.lower())
drop_down_buttons = []
for sr in my_reddits:
drop_down_buttons.append(SubredditButton(sr))
#leaving the 'home' option out for now
#drop_down_buttons.insert(0, NamedButton('home', sr_path = False,
# css_class = 'top-option',
# dest = '/'))
drop_down_buttons.append(NamedButton('edit', sr_path = False,
css_class = 'bottom-option',
dest = '/reddits/'))
self.sr_dropdown = SubredditMenu(drop_down_buttons,
title = _('my reddits'),
type = 'srdrop')
pop_reddits = Subreddit.default_srs(c.content_langs, limit = 30)
buttons = [SubredditButton(sr) for sr in c.recent_reddits]
for sr in pop_reddits:
if sr not in c.recent_reddits:
buttons.append(SubredditButton(sr))
self.sr_bar = NavMenu(buttons, type='flatlist', separator = '-',
_id = 'sr-bar')
示例2: new_promotion
def new_promotion(title, url, selftext, user, ip):
"""
Creates a new promotion with the provided title, etc, and sets it
status to be 'unpaid'.
"""
sr = Subreddit._byID(Subreddit.get_promote_srid())
l = Link._submit(title, url, user, sr, ip)
l.promoted = True
l.disable_comments = False
l.sendreplies = True
PromotionLog.add(l, 'promotion created')
if url == 'self':
l.url = l.make_permalink_slow()
l.is_self = True
l.selftext = selftext
l._commit()
update_promote_status(l, PROMOTE_STATUS.unpaid)
# the user has posted a promotion, so enable the promote menu unless
# they have already opted out
if user.pref_show_promote is not False:
user.pref_show_promote = True
user._commit()
# notify of new promo
emailer.new_promo(l)
return l
示例3: new_promotion
def new_promotion(is_self, title, content, author, ip):
"""
Creates a new promotion with the provided title, etc, and sets it
status to be 'unpaid'.
"""
sr = Subreddit._byID(Subreddit.get_promote_srid())
l = Link._submit(
is_self=is_self,
title=title,
content=content,
author=author,
sr=sr,
ip=ip,
)
l.promoted = True
l.disable_comments = False
l.sendreplies = True
PromotionLog.add(l, 'promotion created')
update_promote_status(l, PROMOTE_STATUS.unpaid)
# the user has posted a promotion, so enable the promote menu unless
# they have already opted out
if author.pref_show_promote is not False:
author.pref_show_promote = True
author._commit()
# notify of new promo
emailer.new_promo(l)
return l
示例4: get_subreddit
def get_subreddit(self):
"""checks if the current url refers to a subreddit and returns
that subreddit object. The cases here are:
* the hostname is unset or is g.domain, in which case it
looks for /r/XXXX or /subreddits. The default in this case
is Default.
* the hostname is a cname to a known subreddit.
On failure to find a subreddit, returns None.
"""
from pylons import g
from r2.models import Subreddit, Sub, NotFound, DefaultSR
try:
if (not self.hostname or
is_subdomain(self.hostname, g.domain) or
self.hostname.startswith(g.domain)):
if self.path.startswith('/r/'):
return Subreddit._by_name(self.path.split('/')[2])
elif self.path.startswith(('/subreddits/', '/reddits/')):
return Sub
else:
return DefaultSR()
elif self.hostname:
return Subreddit._by_domain(self.hostname)
except NotFound:
pass
return None
示例5: new_report
def new_report(thing):
if isinstance(thing, Link):
sr = Subreddit._byID(thing.sr_id)
add_queries([get_reported_links(sr)], insert_items = thing)
elif isinstance(thing, Comment):
sr = Subreddit._byID(thing.sr_id)
add_queries([get_reported_comments(sr)], insert_items = thing)
示例6: backfill
def backfill(after=None):
q = Subreddit._query(sort=asc('_date'))
if after:
sr = Subreddit._by_name(after)
q = q._after(sr)
for sr in fetch_things2(q):
backfill_sr(sr)
示例7: get_test_user
def get_test_user(self):
account = Account._byID(1, data=True)
if not account.email:
account.email = '[email protected]'
account._commit()
c.content_langs = ['en']
Subreddit.subscribe_defaults(account)
return account
示例8: srids_from_site
def srids_from_site(user, site):
if not isinstance(site, FakeSubreddit):
srids = {site._id}
elif isinstance(site, MultiReddit):
srids = set(site.sr_ids)
elif user and not isinstance(user, FakeAccount):
srids = set(Subreddit.user_subreddits(user, ids=True) + [""])
else:
srids = set(Subreddit.user_subreddits(None, ids=True) + [""])
return srids
示例9: ensure_subreddit
def ensure_subreddit(name, author):
"""Look up or create a subreddit and return it."""
try:
sr = Subreddit._by_name(name)
print ">> found /r/{}".format(name)
return sr
except NotFound:
print ">> creating /r/{}".format(name)
sr = Subreddit._new(name=name, title="/r/{}".format(name), author_id=author._id, lang="en", ip="127.0.0.1")
sr._commit()
return sr
示例10: set_subreddit
def set_subreddit():
#the r parameter gets added by javascript for POST requests so we
#can reference c.site in api.py
sr_name = request.environ.get("subreddit", request.POST.get('r'))
domain = request.environ.get("domain")
can_stale = request.method.upper() in ('GET', 'HEAD')
c.site = Frontpage
if not sr_name:
#check for cnames
cname = request.environ.get('legacy-cname')
if cname:
sr = Subreddit._by_domain(cname) or Frontpage
domain = g.domain
if g.domain_prefix:
domain = ".".join((g.domain_prefix, domain))
redirect_to('http://%s%s' % (domain, sr.path), _code=301)
elif sr_name == 'r':
#reddits
c.site = Sub
elif '+' in sr_name:
sr_names = sr_name.split('+')
srs = set(Subreddit._by_name(sr_names, stale=can_stale).values())
if All in srs:
c.site = All
elif Friends in srs:
c.site = Friends
else:
srs = [sr for sr in srs if not isinstance(sr, FakeSubreddit)]
if len(srs) == 0:
c.site = MultiReddit([], sr_name)
elif len(srs) == 1:
c.site = srs.pop()
else:
sr_ids = [sr._id for sr in srs]
c.site = MultiReddit(sr_ids, sr_name)
else:
try:
c.site = Subreddit._by_name(sr_name, stale=can_stale)
except NotFound:
sr_name = chksrname(sr_name)
if sr_name:
redirect_to("/reddits/search?q=%s" % sr_name)
elif not c.error_page and not request.path.startswith("/api/login/") :
abort(404)
#if we didn't find a subreddit, check for a domain listing
if not sr_name and isinstance(c.site, DefaultSR) and domain:
c.site = DomainSR(domain)
if isinstance(c.site, FakeSubreddit):
c.default_sr = True
示例11: srnames_from_site
def srnames_from_site(user, site):
if not isinstance(site, FakeSubreddit):
srnames = {site.name}
elif isinstance(site, MultiReddit):
srnames = {sr.name for sr in site.srs}
elif user and not isinstance(user, FakeAccount):
srnames = {sr.name for sr in Subreddit.user_subreddits(user, ids=False)}
srnames.add(Frontpage.name)
else:
srnames = {sr.name for sr in Subreddit.user_subreddits(None, ids=False)}
srnames.add(Frontpage.name)
return srnames
示例12: subs_contribs
def subs_contribs(sr_name = 'betateam'):
"""Convert all subscribers of a given subreddit to
contributors. Useful for forming opt-in beta teams"""
from r2.models import Subreddit, SRMember
sr = Subreddit._by_name(sr_name)
q = SRMember._query(SRMember.c._thing1_id == sr._id)
for rel in rels:
if rel._name == 'subscriber':
sr.add_contributor(rel._thing2)
Subreddit.special_reddits(rel._thing2, 'contributor', _update=True)
示例13: get_promotion_list
def get_promotion_list(user, site):
if not isinstance(site, FakeSubreddit):
srids = set([site._id])
elif isinstance(site, MultiReddit):
srids = set(site.sr_ids)
elif user and not isinstance(user, FakeAccount):
srids = set(Subreddit.reverse_subscriber_ids(user) + [""])
else:
srids = set(Subreddit.user_subreddits(None, ids=True) + [""])
tuples = get_promotion_list_cached(srids)
return [PromoTuple(*t) for t in tuples]
示例14: get_promotion_list
def get_promotion_list(user, site):
# site is specified, pick an ad from that site
if not isinstance(site, FakeSubreddit):
srids = set([site._id])
elif isinstance(site, MultiReddit):
srids = set(site.sr_ids)
# site is Fake, user is not. Pick based on their subscriptions.
elif user and not isinstance(user, FakeAccount):
srids = set(Subreddit.reverse_subscriber_ids(user) + [""])
# both site and user are "fake" -- get the default subscription list
else:
srids = set(Subreddit.user_subreddits(None, True) + [""])
return get_promotions_cached(srids)
示例15: assign_trial
def assign_trial(account, ip, slash16):
from r2.models import Jury, Subreddit, Trial
from r2.lib.db import queries
defendants_voted_upon = []
defendants_assigned_to = []
for jury in Jury.by_account(account):
defendants_assigned_to.append(jury._thing2_id)
if jury._name != '0':
defendants_voted_upon.append(jury._thing2_id)
subscribed_sr_ids = Subreddit.user_subreddits(account, ids=True, limit=None)
# Pull defendants, except ones which already have lots of juryvotes
defs = Trial.all_defendants(quench=True)
# Filter out defendants outside this user's subscribed SRs
defs = filter (lambda d: d.sr_id in subscribed_sr_ids, defs)
# Dictionary of sr_id => SR for all defendants' SRs
srs = Subreddit._byID(set([ d.sr_id for d in defs ]))
# Dictionary of sr_id => eligibility bool
submit_srs = {}
for sr_id, sr in srs.iteritems():
submit_srs[sr_id] = sr.can_submit(account) and not sr._spam
# Filter out defendants with ineligible SRs
defs = filter (lambda d: submit_srs.get(d.sr_id), defs)
likes = queries.get_likes(account, defs)
if not g.debug:
# Filter out things that the user has upvoted or downvoted
defs = filter (lambda d: likes.get((account, d)) is None, defs)
# Prefer oldest trials
defs.sort(key=lambda x: x._date)
for defendant in defs:
sr = srs[defendant.sr_id]
if voir_dire(account, ip, slash16, defendants_voted_upon, defendant, sr):
if defendant._id not in defendants_assigned_to:
j = Jury._new(account, defendant)
return defendant
return None