本文整理汇总了Python中r2.models.subreddit.Subreddit._by_name方法的典型用法代码示例。如果您正苦于以下问题:Python Subreddit._by_name方法的具体用法?Python Subreddit._by_name怎么用?Python Subreddit._by_name使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类r2.models.subreddit.Subreddit
的用法示例。
在下文中一共展示了Subreddit._by_name方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testExcludeNegativeLookups
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def testExcludeNegativeLookups(self):
self.cache.get_multi.return_value = {"doesnotexist": Subreddit.SRNAME_NOTFOUND}
with self.assertRaises(NotFound):
Subreddit._by_name("doesnotexist")
self.assertEqual(self.subreddit_query.call_count, 0)
self.assertEqual(self.subreddit_byID.call_count, 0)
self.assertEqual(self.cache.set_multi.call_count, 0)
示例2: testCacheNegativeResults
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def testCacheNegativeResults(self):
self.cache.get_multi.return_value = {}
self.subreddit_query.return_value = []
self.subreddit_byID.return_value = []
with self.assertRaises(NotFound):
Subreddit._by_name("doesnotexist")
self.cache.set_multi.assert_called_once_with(
{"doesnotexist": Subreddit.SRNAME_NOTFOUND}, prefix="srid:")
示例3: set_subreddit
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.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
示例4: set_subreddit
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.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')
default_sr = DefaultSR()
c.site = default_sr
if not sr_name:
#check for cnames
sub_domain = request.environ.get('sub_domain')
if sub_domain and not sub_domain.endswith(g.media_domain):
c.site = Subreddit._by_domain(sub_domain) or default_sr
elif sr_name == 'r':
#reddits
c.site = Sub
else:
try:
if '+' in sr_name:
srs = set()
sr_names = sr_name.split('+')
real_path = sr_name
srs = Subreddit._by_name(sr_names, stale=can_stale).values()
if len(srs) != len(sr_names):
abort(404)
elif any(isinstance(sr, FakeSubreddit)
for sr in srs):
if All in srs:
c.site = All
elif Friend in srs:
c.site = Friend
else:
abort(400)
else:
sr_ids = [sr._id for sr in srs]
c.site = MultiReddit(sr_ids, real_path)
else:
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
示例5: set_subreddit
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.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")
default_sr = DefaultSR()
c.site = default_sr
if not sr_name:
# check for cnames
sub_domain = request.environ.get("sub_domain")
if sub_domain and not sub_domain.endswith(g.media_domain):
c.site = Subreddit._by_domain(sub_domain) or default_sr
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
示例6: set_subreddit
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.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")
if not sr_name:
#check for cnames
sub_domain = request.environ.get('sub_domain')
sr = Subreddit._by_domain(sub_domain) if sub_domain else None
c.site = sr or Default
elif sr_name == 'r':
#reddits
c.site = Sub
else:
try:
if '+' in sr_name:
srs = set()
sr_names = sr_name.split('+')
real_path = sr_name
for sr_name in sr_names:
srs.add(Subreddit._by_name(sr_name))
sr_ids = [sr._id for sr in srs]
c.site = MultiReddit(sr_ids, real_path)
else:
c.site = Subreddit._by_name(sr_name)
except NotFound:
c.site = Default
if chksrname(sr_name):
redirect_to("/categories/create?name=%s" % sr_name)
elif not c.error_page:
abort(404, "not found")
#if we didn't find a subreddit, check for a domain listing
if not sr_name and c.site == Default and domain:
c.site = DomainSR(domain)
if isinstance(c.site, FakeSubreddit):
c.default_sr = True
try:
c.current_or_default_sr = Subreddit._by_name(g.default_sr)
except NotFound:
c.current_or_default_sr = None
else:
c.current_or_default_sr = c.site
# check that the site is available:
if c.site._spam and not c.user_is_admin and not c.error_page:
abort(404, "not found")
示例7: set_subreddit
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.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")
c.site = Default
if not sr_name:
# check for cnames
sub_domain = request.environ.get("sub_domain")
if sub_domain and not sub_domain.endswith(g.media_domain):
c.site = Subreddit._by_domain(sub_domain) or Default
elif sr_name == "r":
# reddits
c.site = Sub
else:
try:
if "+" in sr_name:
srs = set()
sr_names = sr_name.split("+")
real_path = sr_name
srs = Subreddit._by_name(sr_names).values()
if len(srs) != len(sr_names):
abort(404)
elif any(isinstance(sr, FakeSubreddit) for sr in srs):
if All in srs:
c.site = All
elif Friend in srs:
c.site = Friend
else:
abort(400)
else:
sr_ids = [sr._id for sr in srs]
c.site = MultiReddit(sr_ids, real_path)
else:
c.site = Subreddit._by_name(sr_name)
except NotFound:
sr_name = chksrname(sr_name)
if sr_name:
redirect_to("/reddits/search?q=%s" % sr_name)
elif not c.error_page:
abort(404)
# if we didn't find a subreddit, check for a domain listing
if not sr_name and c.site == Default and domain:
c.site = DomainSR(domain)
if isinstance(c.site, FakeSubreddit):
c.default_sr = True
示例8: GET_document
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def GET_document(self):
try:
#no cookies on errors
c.cookies.clear()
code = request.GET.get('code', '')
srname = request.GET.get('srname', '')
if srname:
c.site = Subreddit._by_name(srname)
if c.render_style not in self.allowed_render_styles:
return str(code)
elif code == '403':
return self.send403()
elif code == '500':
return redditbroke % rand_strings.sadmessages
elif code == '503':
c.response.status_code = 503
c.response.headers['Retry-After'] = 1
c.response.content = toofast
return c.response
elif code == '304':
if request.GET.has_key('x-sup-id'):
c.response.headers['x-sup-id'] = request.GET.get('x-sup-id')
return c.response
elif c.site:
return self.send404()
else:
return "page not found"
except:
return handle_awful_failure("something really bad just happened.")
示例9: _add_multi_srs
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def _add_multi_srs(self, multi, sr_datas):
srs = Subreddit._by_name(sr_data['name'] for sr_data in sr_datas)
for sr in srs.itervalues():
if isinstance(sr, FakeSubreddit):
raise RedditError('MULTI_SPECIAL_SUBREDDIT',
msg_params={'path': sr.path},
code=400)
sr_props = {}
for sr_data in sr_datas:
try:
sr = srs[sr_data['name']]
except KeyError:
raise RedditError('SUBREDDIT_NOEXIST', code=400)
else:
# name is passed in via the API data format, but should not be
# stored on the model.
del sr_data['name']
sr_props[sr] = sr_data
try:
multi.add_srs(sr_props)
except TooManySubredditsError as e:
raise RedditError('MULTI_TOO_MANY_SUBREDDITS', code=409)
return sr_props
示例10: GET_document
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def GET_document(self):
try:
c.errors = c.errors or ErrorSet()
# clear cookies the old fashioned way
c.cookies = Cookies()
code = request.GET.get('code', '')
try:
code = int(code)
except ValueError:
code = 404
srname = request.GET.get('srname', '')
takedown = request.GET.get('takedown', "")
# StatusBasedRedirect will override this anyway, but we need this
# here for pagecache to see.
response.status_int = code
if srname:
c.site = Subreddit._by_name(srname)
if request.GET.has_key('allow_framing'):
c.allow_framing = bool(request.GET['allow_framing'] == '1')
if code in (204, 304):
# NEVER return a content body on 204/304 or downstream
# caches may become very confused.
if request.GET.has_key('x-sup-id'):
x_sup_id = request.GET.get('x-sup-id')
if '\r\n' not in x_sup_id:
response.headers['x-sup-id'] = x_sup_id
return ""
elif c.render_style not in self.allowed_render_styles:
return str(code)
elif c.render_style in extensions.API_TYPES:
data = request.environ.get('extra_error_data', {'error': code})
if request.environ.get("WANT_RAW_JSON"):
return scriptsafe_dumps(data)
return websafe_json(json.dumps(data))
elif takedown and code == 404:
link = Link._by_fullname(takedown)
return pages.TakedownPage(link).render()
elif code == 403:
return self.send403()
elif code == 429:
return self.send429()
elif code == 500:
randmin = {'admin': random.choice(self.admins)}
failien_url = make_failien_url()
sad_message = safemarkdown(rand_strings.sadmessages % randmin)
return redditbroke % (failien_url, sad_message)
elif code == 503:
return self.send503()
elif c.site:
return self.send404()
else:
return "page not found"
except Exception as e:
return handle_awful_failure("ErrorController.GET_document: %r" % e)
示例11: subreddits_slow
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def subreddits_slow(self):
if self._subreddits is not None:
return self._subreddits
sr_names = self.subreddit_names
srs = Subreddit._by_name(sr_names).values()
self._subreddits = srs
return srs
示例12: testSingleCached
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def testSingleCached(self):
subreddit = Subreddit(id=1, name="exists")
self.cache.get_multi.return_value = {"exists": subreddit._id}
self.subreddit_byID.return_value = [subreddit]
ret = Subreddit._by_name("exists")
self.assertEqual(ret, subreddit)
self.assertEqual(self.subreddit_query.call_count, 0)
示例13: testSingleFromDB
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def testSingleFromDB(self):
subreddit = Subreddit(id=1, name="exists")
self.cache.get_multi.return_value = {}
self.subreddit_query.return_value = [subreddit]
self.subreddit_byID.return_value = [subreddit]
ret = Subreddit._by_name("exists")
self.assertEqual(ret, subreddit)
self.assertEqual(self.cache.set_multi.call_count, 1)
示例14: get_promote_srid
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def get_promote_srid(name = 'promos'):
try:
sr = Subreddit._by_name(name, stale=True)
except NotFound:
sr = Subreddit._new(name = name,
title = "promoted links",
# negative author_ids make this unlisable
author_id = -1,
type = "public",
ip = '0.0.0.0')
return sr._id
示例15: testForceUpdate
# 需要导入模块: from r2.models.subreddit import Subreddit [as 别名]
# 或者: from r2.models.subreddit.Subreddit import _by_name [as 别名]
def testForceUpdate(self):
sr = Subreddit(id=1, name="exists")
self.cache.get_multi.return_value = {sr.name: sr._id}
self.subreddit_query.return_value = [sr]
self.subreddit_byID.return_value = [sr]
ret = Subreddit._by_name("exists", _update=True)
self.assertEqual(ret, sr)
self.cache.set_multi.assert_called_once_with(
{sr.name: sr._id}, prefix="srid:")