当前位置: 首页>>代码示例>>Python>>正文


Python Subreddit._by_name方法代码示例

本文整理汇总了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)
开发者ID:AppleBetas,项目名称:reddit,代码行数:10,代码来源:subreddit_test.py

示例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:")
开发者ID:AppleBetas,项目名称:reddit,代码行数:12,代码来源:subreddit_test.py

示例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
开发者ID:chrish42,项目名称:reddit,代码行数:55,代码来源:reddit_base.py

示例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
开发者ID:rmurt,项目名称:reddit,代码行数:54,代码来源:reddit_base.py

示例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
开发者ID:sylversphere,项目名称:reddit,代码行数:52,代码来源:reddit_base.py

示例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")
开发者ID:Craigus,项目名称:lesswrong,代码行数:51,代码来源:reddit_base.py

示例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
开发者ID:jrabbit,项目名称:reddit,代码行数:50,代码来源:reddit_base.py

示例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.")
开发者ID:rajbot,项目名称:tikical,代码行数:32,代码来源:error.py

示例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
开发者ID:ani625,项目名称:reddit,代码行数:29,代码来源:multi.py

示例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)
开发者ID:ActivateServices,项目名称:reddit,代码行数:61,代码来源:error.py

示例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
开发者ID:rgandsam,项目名称:reddit,代码行数:10,代码来源:promo.py

示例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)
开发者ID:AppleBetas,项目名称:reddit,代码行数:11,代码来源:subreddit_test.py

示例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)
开发者ID:AppleBetas,项目名称:reddit,代码行数:12,代码来源:subreddit_test.py

示例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
开发者ID:dinxx,项目名称:reddit,代码行数:13,代码来源:promo.py

示例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:")
开发者ID:AppleBetas,项目名称:reddit,代码行数:13,代码来源:subreddit_test.py


注:本文中的r2.models.subreddit.Subreddit._by_name方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。