本文整理汇总了Python中r2.models.Subreddit._by_name方法的典型用法代码示例。如果您正苦于以下问题:Python Subreddit._by_name方法的具体用法?Python Subreddit._by_name怎么用?Python Subreddit._by_name使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类r2.models.Subreddit
的用法示例。
在下文中一共展示了Subreddit._by_name方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: set_subreddit
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
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
示例2: run
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def run(self, path):
if not self.required and not path:
return
adhoc_multi_rx = is_adhoc_multi_rx.match(path)
if is_multi_rx.match(path):
return VMultiByPath(self.param, kinds=("m")).run(path)
elif adhoc_multi_rx:
sr_strings = adhoc_multi_rx.groups()[0].split("+")
srs = Subreddit._by_name(sr_strings, stale=True).values()
return MultiReddit(path, srs)
else:
try:
return Subreddit._by_name(path)
except NotFound:
self.set_error(errors.INVALID_SITE_PATH)
示例3: POST_report
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def POST_report(self, form, jquery, report_type):
"""Report the thread for violating the rules of reddit."""
if form.has_errors("type", errors.INVALID_OPTION):
return
if c.user._spam or c.user.ignorereports:
return
already_reported = LiveUpdateReportsByAccount.get_report(
c.user, c.liveupdate_event)
if already_reported:
self.abort403()
LiveUpdateReportsByAccount.create(
c.user, c.liveupdate_event, type=report_type)
queries.report_event(c.liveupdate_event)
try:
default_subreddit = Subreddit._by_name(g.default_sr)
except NotFound:
pass
else:
not_yet_reported = g.cache.add(
"lu_reported_" + str(c.liveupdate_event._id), 1, time=3600)
if not_yet_reported:
send_system_message(
default_subreddit,
subject="live thread reported",
body=REPORTED_MESSAGE % {
"title": c.liveupdate_event.title,
"url": "/live/" + c.liveupdate_event._id,
"reason": pages.REPORT_TYPES[report_type],
},
)
示例4: add_affinity_variant
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def add_affinity_variant(variant, filename, debug=True):
"""Store related subreddits and similarity scores"""
# Load file and split out affinity data
with open(filename, 'rb') as f:
sr_affinity_data = []
for line in f:
sr_affinity_data.append(line.strip().split('\x01'))
# Group similar subreddits (and scores) under the original subreddit
subreddit_similarity = {}
for sr_name, similar_subreddit, similarity in sr_affinity_data:
if subreddit_similarity.get(sr_name):
subreddit_similarity[sr_name][similar_subreddit] = similarity
else:
similar_subreddit_dict = {similar_subreddit: similarity}
subreddit_similarity[sr_name] = similar_subreddit_dict
# Add subreddit and their similar subreddits/scores to SubredditAffinity
for sr_name, similar_subreddits in subreddit_similarity.iteritems():
try:
subreddit = Subreddit._by_name(sr_name)
except NotFound:
print 'skipping: not found %s' % sr_name
if debug:
print "%s adding: %s" % (subreddit.name, similar_subreddits)
else:
SubredditAffinity.create(subreddit, variant, similar_subreddits)
示例5: GET_promote_inventory
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def GET_promote_inventory(self, start, end, sr_name, collection_name):
if not start or not end:
start = promote.promo_datetime_now(offset=1).date()
end = promote.promo_datetime_now(offset=8).date()
c.errors.remove((errors.BAD_DATE, 'startdate'))
c.errors.remove((errors.BAD_DATE, 'enddate'))
target = Target(Frontpage.name)
if sr_name:
try:
sr = Subreddit._by_name(sr_name)
target = Target(sr.name)
except NotFound:
c.errors.add(errors.SUBREDDIT_NOEXIST, field='sr_name')
elif collection_name:
collection = Collection.by_name(collection_name)
if not collection:
c.errors.add(errors.COLLECTION_NOEXIST, field='collection_name')
else:
target = Target(collection)
content = PromoteInventory(start, end, target)
if c.render_style == 'csv':
return content.as_csv()
else:
return PromotePage(title=_("sponsored link inventory"),
content=content).render()
示例6: get_subreddit
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
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
示例7: submit_all
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def submit_all():
from r2.models import Subreddit, Account, Link, NotFound
from r2.lib.media import set_media
from r2.lib.db import queries
sr = Subreddit._by_name('testmedia')
author = Account._by_name('testmedia')
links = []
for url in test_urls:
try:
# delete any existing version of the link
l = Link._by_url(url, sr)
print "Deleting %s" % l
l._deleted = True
l._commit()
except NotFound:
pass
l = Link._submit(url, url, author, sr, '0.0.0.0')
try:
set_media(l)
except Exception, e:
print e
if g.write_query_queue:
queries.new_link(l)
links.append(l)
示例8: submit_link
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def submit_link(user, subreddit, title, url, thumb_url):
account = Account._by_name(user)
subreddit = Subreddit._by_name(subreddit)
ip = '127.0.0.1'
# submit the link
link = Link._submit(
is_self=False,
title=title,
content=url,
author=account,
sr=subreddit,
ip=ip,
spam=False,
)
try:
# force the thumbnail before scraper_q gets in the mix
image_data = urllib.urlopen(thumb_url).read()
force_thumbnail(link, image_data)
except:
pass
# various backend processing things
queries.new_link(link)
link.update_search_index()
# wait for the amqp worker to finish up
worker.join()
print link.make_permalink_slow()
示例9: degolden
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def degolden(self, account):
from r2.lib.db.queries import changed
account.gold = False
Award.take_away("reddit_gold", account)
account._commit()
if g.lounge_reddit:
sr = Subreddit._by_name(g.lounge_reddit)
sr.remove_contributor(account)
示例10: campaign_has_oversold_error
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def campaign_has_oversold_error(form, campaign):
if campaign.priority.inventory_override:
return
target = Subreddit._by_name(campaign.sr_name) if campaign.sr_name else None
return has_oversold_error(form, campaign, campaign.start_date,
campaign.end_date, campaign.bid, campaign.cpm,
target)
示例11: backfill
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
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)
示例12: init_builder
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def init_builder(self):
sr = Subreddit._by_name(g.default_sr)
return UnbannedCommentBuilder(
self.query(),
[sr._id],
num = 5,
wrap = RecentItems.wrap_thing,
skip = True
)
示例13: enflair
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def enflair(subreddit_name, account_name, flair_text, flair_class):
sr = Subreddit._by_name(subreddit_name)
account = Account._by_name(account_name)
sr.add_flair(account)
setattr(account, "flair_%d_text" % sr._id, flair_text)
setattr(account, "flair_%d_css_class" % sr._id, flair_class)
account._commit()
示例14: nav
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def nav(self):
sr = Subreddit._by_name(g.default_sr)
cloud = Tag.tag_cloud_for_subreddits([sr._id])
buttons = []
for tag, weight in cloud:
buttons.append(NavButton(tag.name, tag.name, css_class=self.numbers[weight - 1]))
return NavMenu(buttons, type="flatlist", separator=' ', base_path='/tag/')
示例15: promote_link
# 需要导入模块: from r2.models import Subreddit [as 别名]
# 或者: from r2.models.Subreddit import _by_name [as 别名]
def promote_link(link, campaign):
if (not link.over_18 and
campaign.sr_name and Subreddit._by_name(campaign.sr_name).over_18):
link.over_18 = True
link._commit()
if not is_promoted(link):
update_promote_status(link, PROMOTE_STATUS.promoted)
emailer.live_promo(link)