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


Python subreddit.Subreddit类代码示例

本文整理汇总了Python中subreddit.Subreddit的典型用法代码示例。如果您正苦于以下问题:Python Subreddit类的具体用法?Python Subreddit怎么用?Python Subreddit使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Subreddit类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: create_draft_sr

    def create_draft_sr(self):
        from r2.models.subreddit import Subreddit
        Subreddit.subscribe_defaults(self)

        # Create a drafts subredit for this user
        return Subreddit._create_and_subscribe(
            self.draft_sr_name, self, {
                'title': "Drafts for " + self.name,
                'type': "private",
                'default_listing': 'new',
            }
        )
开发者ID:arichard4,项目名称:eaforum,代码行数:12,代码来源:account.py

示例2: _link_nav_query

    def _link_nav_query(self, clause = None, sort = None):
      sr = Subreddit.default()

      q = Link._query(self._nav_query_date_clause(sort), Link.c._deleted == False, Link.c._spam == False, Link.c.sr_id == sr._id, limit = 1, sort = sort, data = True)
      if clause is not None:
        q._filter(clause)
      return q
开发者ID:Craigus,项目名称:lesswrong,代码行数:7,代码来源:link.py

示例3: karma

    def karma(self, kind, sr=None):
        from subreddit import Subreddit

        suffix = "_" + kind + "_karma"

        # if no sr, return the sum
        if sr is None:
            total = 0
            for k, v in self._t.iteritems():
                if k.endswith(suffix):
                    if kind == "link":
                        try:
                            karma_sr_name = k[0 : k.rfind(suffix)]
                            karma_sr = Subreddit._by_name(karma_sr_name)
                            multiplier = karma_sr.post_karma_multiplier
                        except NotFound:
                            multiplier = 1
                    else:
                        multiplier = 1
                    total += v * multiplier
            return total
        else:
            try:
                return getattr(self, sr.name + suffix)
            except AttributeError:
                # if positive karma elsewhere, you get min_up_karma
                if self.karma(kind) > 0:
                    return g.MIN_UP_KARMA
                else:
                    return 0
开发者ID:Kenneth-Chen,项目名称:lesswrong,代码行数:30,代码来源:account.py

示例4: add_props

    def add_props(cls, user, wrapped):
        #fetch parent links
        links = Link._byID(set(l.link_id for l in wrapped), True)
        

        #get srs for comments that don't have them (old comments)
        for cm in wrapped:
            if not hasattr(cm, 'sr_id'):
                cm.sr_id = links[cm.link_id].sr_id
        
        subreddits = Subreddit._byID(set(cm.sr_id for cm in wrapped),
                                     data=True,return_dict=False)
        can_reply_srs = set(s._id for s in subreddits if s.can_comment(user))

        min_score = c.user.pref_min_comment_score

        cids = dict((w._id, w) for w in wrapped)

        for item in wrapped:
            item.link = links.get(item.link_id)
            if not hasattr(item, 'subreddit'):
                item.subreddit = item.subreddit_slow
            if hasattr(item, 'parent_id'):
                parent = Comment._byID(item.parent_id, data=True)
                parent_author = Account._byID(parent.author_id, data=True)
                item.parent_author = parent_author

                if not c.full_comment_listing and cids.has_key(item.parent_id):
                    item.parent_permalink = '#' + utils.to36(item.parent_id)
                else:
                    item.parent_permalink = parent.make_anchored_permalink(item.link, item.subreddit)
            else:
                item.parent_permalink = None
                item.parent_author = None

            item.can_reply = (item.sr_id in can_reply_srs)

            # Don't allow users to vote on their own comments
            item.votable = bool(c.user != item.author)

            # not deleted on profile pages,
            # deleted if spam and not author or admin
            item.deleted = (not c.profilepage and
                           (item._deleted or
                            (item._spam and
                             item.author != c.user and
                             not item.show_spam)))

            # don't collapse for admins, on profile pages, or if deleted
            item.collapsed = ((item.score < min_score) and
                             not (c.profilepage or
                                  item.deleted or
                                  c.user_is_admin))
                
            if not hasattr(item,'editted'):
                item.editted = False
            #will get updated in builder
            item.num_children = 0
            item.score_fmt = Score.points
            item.permalink = item.make_permalink(item.link, item.subreddit)
开发者ID:Kakun1,项目名称:lesswrong,代码行数:60,代码来源:link.py

示例5: subreddit_slow

    def subreddit_slow(self):
        from subreddit import Subreddit

        """return's a link's subreddit. in most case the subreddit is already
        on the wrapped link (as .subreddit), and that should be used
        when possible. """
        return Subreddit._byID(self.sr_id, True, return_dict=False)
开发者ID:ketralnis,项目名称:reddit,代码行数:7,代码来源:link.py

示例6: can_submit

 def can_submit(self, user):
     if c.user_is_admin:
         return True
     elif self.author_id == c.user._id:
         # They can submit if they are the author and still have access
         # to the subreddit of the article
         sr = Subreddit._byID(self.sr_id, data=True)
         return sr.can_submit(user)
     else:
         return False
开发者ID:Kakun1,项目名称:lesswrong,代码行数:10,代码来源:link.py

示例7: subreddit_slow

    def subreddit_slow(self):
        from subreddit import Subreddit
        """return's a comments's subreddit. in most case the subreddit is already
        on the wrapped link (as .subreddit), and that should be used
        when possible. if sr_id does not exist, then use the parent link's"""
        self._safe_load()

        if hasattr(self, 'sr_id'):
            sr_id = self.sr_id
        else:
            l = Link._byID(self.link_id, True)
            sr_id = l.sr_id
        return Subreddit._byID(sr_id, True, return_dict = False)
开发者ID:Craigus,项目名称:lesswrong,代码行数:13,代码来源:link.py

示例8: can_view_slow

 def can_view_slow(self):
     if c.user_is_loggedin:
         # simple case from before:
         if (c.user_is_admin or c.user._id in (self.author_id, self.to_id)):
             return True
         elif self.sr_id:
             sr = Subreddit._byID(self.sr_id)
             is_moderator = sr.is_moderator(c.user)
             # moderators can view messages on subreddits they moderate
             if is_moderator:
                 return True
             elif self.first_message:
                 first = Message._byID(self.first_message, True)
                 return (first.author_id == c.user._id)
开发者ID:ketralnis,项目名称:reddit,代码行数:14,代码来源:link.py

示例9: _next_link_for_tag

    def _next_link_for_tag(self, tag, sort):
      """Returns a query navigation by tag using the supplied sort"""
      from r2.lib.db import tdb_sql as tdb
      import sqlalchemy as sa

      # List of the subreddit ids this user has access to
      sr = Subreddit.default()

      # Get a reference to reddit_rel_linktag
      linktag_type = tdb.rel_types_id[LinkTag._type_id]
      linktag_thing_table = linktag_type.rel_table[0]

      # Get a reference to the reddit_thing_link & reddit_data_link tables
      link_type = tdb.types_id[Link._type_id]
      link_data_table = link_type.data_table[0]
      link_thing_table = link_type.thing_table

      # Subreddit subquery aliased as link_sr
      link_sr = sa.select([
          link_data_table.c.thing_id,
          sa.cast(link_data_table.c.value, sa.INT).label('sr_id')],
          link_data_table.c.key == 'sr_id').alias('link_sr')

      # Determine the date clause based on the sort order requested
      if isinstance(sort, operators.desc):
        date_clause = link_thing_table.c.date < self._date
        sort = sa.desc(link_thing_table.c.date)
      else:
        date_clause = link_thing_table.c.date > self._date
        sort = sa.asc(link_thing_table.c.date)

      query = sa.select([linktag_thing_table.c.thing1_id],
                        sa.and_(linktag_thing_table.c.thing2_id == tag._id,
                                linktag_thing_table.c.thing1_id == link_sr.c.thing_id,
                                linktag_thing_table.c.thing1_id == link_thing_table.c.thing_id,
                                linktag_thing_table.c.name == 'tag',
                                link_thing_table.c.spam == False,
                                link_thing_table.c.deleted == False,
                                date_clause,
                                link_sr.c.sr_id == sr._id),
                        order_by = sort,
                        limit = 1)

      row = query.execute().fetchone()
      return Link._byID(row.thing1_id, data=True) if row else None
开发者ID:Craigus,项目名称:lesswrong,代码行数:45,代码来源:link.py

示例10: add_props

    def add_props(cls, user, wrapped):
        #TODO global-ish functions that shouldn't be here?
        #reset msgtime after this request
        msgtime = c.have_messages
        
        #load the "to" field if required
        to_ids = set(w.to_id for w in wrapped)
        tos = Account._byID(to_ids, True) if to_ids else {}
        links = Link._byID(set(l.link_id for l in wrapped if l.was_comment),
                           data = True,
                           return_dict = True)
        subreddits = Subreddit._byID(set(l.sr_id for l in links.values()),
                                     data = True, return_dict = True)
        parents = Comment._byID(set(l.parent_id for l in wrapped
                                  if hasattr(l, "parent_id") and l.was_comment),
                                data = True, return_dict = True)

        for item in wrapped:
            item.to = tos[item.to_id]
            if msgtime and item._date >= msgtime:
                item.new = True
            else:
                item.new = False
            item.score_fmt = Score.none

            item.message_style = ""
            if item.was_comment:
                link = links[item.link_id]
                sr = subreddits[link.sr_id]
                item.link_title = link.title
                item.link_permalink = link.make_permalink(sr)
                if hasattr(item, "parent_id"):
                    item.subject = _('comment reply')
                    item.message_style = "comment-reply"
                    parent = parents[item.parent_id]
                    item.parent = parent._fullname
                    item.parent_permalink = parent.make_permalink(link, sr)
                else:
                    item.subject = _('post reply')
                    item.message_style = "post-reply"

        # Run this last
        Printable.add_props(user, wrapped)
开发者ID:DFectuoso,项目名称:culter,代码行数:43,代码来源:link.py

示例11: karma_ups_downs

    def karma_ups_downs(self, kind, sr = None):
        # NOTE: There is a legacy inconsistency in this method. If no subreddit
        # is specified, karma from all subreddits will be totaled, with each
        # scaled according to its karma multiplier before being summed. But if
        # a subreddit IS specified, the return value will NOT be scaled.

        assert kind in ('link', 'comment', 'adjustment')

        from subreddit import Subreddit  # prevent circular import

        # If getting karma for a single sr, it's easy
        if sr is not None:
            ups = getattr(self, 'karma_ups_{0}_{1}'.format(kind, sr.name), 0)
            downs = getattr(self, 'karma_downs_{0}_{1}'.format(kind, sr.name), 0)
            return (ups, downs)

        # Otherwise, loop through attributes and sum all karmas
        totals = [0, 0]
        for k, v in self._t.iteritems():
            for pre, idx in (('karma_ups_' + kind + '_', 0),
                              ('karma_downs_' + kind + '_', 1)):
                if k.startswith(pre):
                    karma_sr_name = k[len(pre):]
                    index = idx
                    break
            else:
                continue

            multiplier = 1
            if kind == 'link':
                try:
                    karma_sr = Subreddit._by_name(karma_sr_name)
                    multiplier = karma_sr.post_karma_multiplier
                except NotFound:
                    pass
            totals[index] += v * multiplier
        return tuple(totals)
开发者ID:arichard4,项目名称:eaforum,代码行数:37,代码来源:account.py

示例12: add_props

    def add_props(cls, user, wrapped):
        from r2.lib.template_helpers import add_attr
        from r2.lib import promote
        from r2.lib.wrapped import CachedVariable

        # fetch parent links
        links = Link._byID(set(l.link_id for l in wrapped), data=True, return_dict=True, stale=True)

        # get srs for comments that don't have them (old comments)
        for cm in wrapped:
            if not hasattr(cm, "sr_id"):
                cm.sr_id = links[cm.link_id].sr_id

        subreddits = Subreddit._byID(set(cm.sr_id for cm in wrapped), data=True, return_dict=False, stale=True)
        cids = dict((w._id, w) for w in wrapped)
        parent_ids = set(cm.parent_id for cm in wrapped if getattr(cm, "parent_id", None) and cm.parent_id not in cids)
        parents = {}
        if parent_ids:
            parents = Comment._byID(parent_ids, data=True, stale=True)

        can_reply_srs = set(s._id for s in subreddits if s.can_comment(user)) if c.user_is_loggedin else set()
        can_reply_srs.add(promote.get_promote_srid())

        min_score = user.pref_min_comment_score

        profilepage = c.profilepage
        user_is_admin = c.user_is_admin
        user_is_loggedin = c.user_is_loggedin
        focal_comment = c.focal_comment

        for item in wrapped:
            # for caching:
            item.profilepage = c.profilepage
            item.link = links.get(item.link_id)

            if item.link._score <= 1 or item.score < 3 or item.link._spam or item._spam or item.author._spam:
                item.nofollow = True
            else:
                item.nofollow = False

            if not hasattr(item, "subreddit"):
                item.subreddit = item.subreddit_slow
            if item.author_id == item.link.author_id and not item.link._deleted:
                add_attr(item.attribs, "S", link=item.link.make_permalink(item.subreddit))
            if not hasattr(item, "target"):
                item.target = None
            if item.parent_id:
                if item.parent_id in cids:
                    item.parent_permalink = "#" + utils.to36(item.parent_id)
                else:
                    parent = parents[item.parent_id]
                    item.parent_permalink = parent.make_permalink(item.link, item.subreddit)
            else:
                item.parent_permalink = None

            item.can_reply = False
            if c.can_reply or (item.sr_id in can_reply_srs):
                age = c.start_time - item._date
                if age.days < g.REPLY_AGE_LIMIT:
                    item.can_reply = True

            # not deleted on profile pages,
            # deleted if spam and not author or admin
            item.deleted = not profilepage and (
                item._deleted or (item._spam and item.author != user and not item.show_spam)
            )

            extra_css = ""
            if item.deleted:
                extra_css += "grayed"
                if not user_is_admin:
                    item.author = DeletedUser()
                    item.body = "[deleted]"

            if focal_comment == item._id36:
                extra_css += " border"

            # don't collapse for admins, on profile pages, or if deleted
            item.collapsed = (item.score < min_score) and not (profilepage or item.deleted or user_is_admin)

            item.editted = getattr(item, "editted", False)

            item.render_css_class = "comment %s" % CachedVariable("time_period")

            # will get updated in builder
            item.num_children = 0
            item.score_fmt = Score.points
            item.permalink = item.make_permalink(item.link, item.subreddit)

            item.is_author = user == item.author
            item.is_focal = focal_comment == item._id36

            # will seem less horrible when add_props is in pages.py
            from r2.lib.pages import UserText

            item.usertext = UserText(
                item,
                item.body,
                editable=item.is_author,
                nofollow=item.nofollow,
#.........这里部分代码省略.........
开发者ID:ketralnis,项目名称:reddit,代码行数:101,代码来源:link.py

示例13: _new

    def _new(cls, author, to, subject, body, ip, parent=None, sr=None):
        m = Message(
            subject=subject, body=body, author_id=author._id, new=True, ip=ip)
        m._spam = author._spam
        sr_id = None
        # check to see if the recipient is a subreddit and swap args accordingly
        if to and isinstance(to, Subreddit):
            to_subreddit = True
            to, sr = None, to
        else:
            to_subreddit = False

        if sr:
            sr_id = sr._id
        if parent:
            m.parent_id = parent._id
            if parent.first_message:
                m.first_message = parent.first_message
            else:
                m.first_message = parent._id
            if parent.sr_id:
                sr_id = parent.sr_id

        if not to and not sr_id:
            raise CreationError, "Message created with neither to nor sr_id"

        m.to_id = to._id if to else None
        if sr_id is not None:
            m.sr_id = sr_id

        m._commit()

        inbox_rel = None
        if sr_id and not sr:
            sr = Subreddit._byID(sr_id)

        inbox_rel = []
        if sr_id:
            # if there is a subreddit id, and it's either a reply or
            # an initial message to an SR, add to the moderator inbox
            # (i.e., don't do it for automated messages from the SR)
            if parent or to_subreddit:
                inbox_rel.append(ModeratorInbox._add(sr, m, 'inbox'))
            if author.name in g.admins:
                m.distinguished = 'admin'
                m._commit()
            elif sr.is_moderator(author):
                m.distinguished = 'yes'
                m._commit()

        # if there is a "to" we may have to create an inbox relation as well
        # also, only global admins can be message spammed.
        if to and (not m._spam or to.name in g.admins):
            # if the current "to" is not a sr moderator,
            # they need to be notified
            if not sr_id or not sr.is_moderator(to):
                inbox_rel.append(Inbox._add(to, m, 'inbox'))
            # find the message originator
            elif sr_id and m.first_message:
                first = Message._byID(m.first_message, True)
                orig = Account._byID(first.author_id, True)
                # if the originator is not a moderator...
                if not sr.is_moderator(orig) and orig._id != author._id:
                    inbox_rel.append(Inbox._add(orig, m, 'inbox'))
        return (m, inbox_rel)
开发者ID:ketralnis,项目名称:reddit,代码行数:65,代码来源:link.py

示例14: _new

    def _new(cls, author, to, subject, body, ip, parent=None, sr=None,
             from_sr=False):
        m = Message(subject=subject, body=body, author_id=author._id, new=True,
                    ip=ip, from_sr=from_sr)
        m._spam = author._spam

        if author._spam:
            g.stats.simple_event('spam.autoremove.message')

        sr_id = None
        # check to see if the recipient is a subreddit and swap args accordingly
        if to and isinstance(to, Subreddit):
            if from_sr:
                raise CreationError("Cannot send from SR to SR")
            to_subreddit = True
            to, sr = None, to
        else:
            to_subreddit = False

        if sr:
            sr_id = sr._id
        if parent:
            m.parent_id = parent._id
            if parent.first_message:
                m.first_message = parent.first_message
            else:
                m.first_message = parent._id
            if parent.sr_id:
                sr_id = parent.sr_id

        if not to and not sr_id:
            raise CreationError("Message created with neither to nor sr_id")
        if from_sr and not sr_id:
            raise CreationError("Message sent from_sr without setting sr")

        m.to_id = to._id if to else None
        if sr_id is not None:
            m.sr_id = sr_id

        m._commit()

        if sr_id and not sr:
            sr = Subreddit._byID(sr_id)

        inbox_rel = []
        if sr_id:
            # if there is a subreddit id, and it's either a reply or
            # an initial message to an SR, add to the moderator inbox
            # (i.e., don't do it for automated messages from the SR)
            if parent or to_subreddit and not from_sr:
                inbox_rel.append(ModeratorInbox._add(sr, m, 'inbox'))
            if author.name in g.admins:
                m.distinguished = 'admin'
                m._commit()
            elif sr.is_moderator(author):
                m.distinguished = 'yes'
                m._commit()

        # if there is a "to" we may have to create an inbox relation as well
        # also, only global admins can be message spammed.
        if to and (not m._spam or to.name in g.admins):
            # if the current "to" is not a sr moderator,
            # they need to be notified
            if not sr_id or not sr.is_moderator(to):
                # Record the inbox relation, but don't give the user
                # an orangered, if they PM themselves.
                # Don't notify on PMs from blocked users, either
                orangered = (to.name != author.name and
                             author._id not in to.enemies)
                inbox_rel.append(Inbox._add(to, m, 'inbox',
                                            orangered=orangered))
            # find the message originator
            elif sr_id and m.first_message:
                first = Message._byID(m.first_message, True)
                orig = Account._byID(first.author_id, True)
                # if the originator is not a moderator...
                if not sr.is_moderator(orig) and orig._id != author._id:
                    inbox_rel.append(Inbox._add(orig, m, 'inbox'))
        return (m, inbox_rel)
开发者ID:jcald,项目名称:reddit,代码行数:79,代码来源:link.py

示例15: subreddits

 def subreddits(self):
     from subreddit import Subreddit
     return Subreddit.user_subreddits(self)
开发者ID:XPRIYA,项目名称:HMWK2PartB,代码行数:3,代码来源:account.py


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