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
示例#2
0
    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
示例#3
0
    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)
示例#4
0
    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)