Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
karma: Add karma list api endpoint.
Browse files Browse the repository at this point in the history
  • Loading branch information
andre-d authored and kemitche committed Apr 7, 2014
1 parent faefd7b commit a635c9c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
13 changes: 13 additions & 0 deletions r2/r2/controllers/apiv1.py
Expand Up @@ -33,6 +33,7 @@
IdentityJsonTemplate,
PrefsJsonTemplate,
TrophyListJsonTemplate,
KarmaListJsonTemplate,
)
from r2.lib.validator import (
validate,
Expand Down Expand Up @@ -122,6 +123,18 @@ def GET_trophies(self):
"""Return a list of trophies for the current user."""
return self._get_usertrophies(c.oauth_user)

@require_oauth2_scope("mysubreddits")
@api_doc(
section=api_section.account,
uri='/api/v1/me/karma',
extensions=['json'],
)
def GET_karma(self):
"""Return a breakdown of subreddit karma."""
karmas = c.oauth_user.all_karmas(include_old=False)
resp = KarmaListJsonTemplate().render(karmas)
return self.api_wrapper(resp.finalize())

PREFS_JSON_VALIDATOR = VValidatedJSON("json", PREFS_JSON_SPEC,
body=True)

Expand Down
12 changes: 12 additions & 0 deletions r2/r2/lib/jsontemplates.py
Expand Up @@ -1032,6 +1032,18 @@ class PolicyViewJsonTemplate(ThingJsonTemplate):
def kind(self, wrapped):
return "Policy"

class KarmaListJsonTemplate(ThingJsonTemplate):
def data(self, karmas):
karmas = [{
'sr': label,
'link_karma': lc,
'comment_karma': cc,
} for label, title, lc, cc in karmas]
return karmas

def kind(self, wrapped):
return "KarmaList"

class TrophyJsonTemplate(ThingJsonTemplate):
_data_attrs_ = dict(
award_id="award._id36",
Expand Down
4 changes: 2 additions & 2 deletions r2/r2/models/account.py
Expand Up @@ -197,7 +197,7 @@ def safe_karma(self):
karma = self.link_karma
return max(karma, 1) if karma > -1000 else karma

def all_karmas(self):
def all_karmas(self, include_old=True):
"""returns a list of tuples in the form (name, hover-text, link_karma,
comment_karma)"""
link_suffix = '_link_karma'
Expand All @@ -218,7 +218,7 @@ def all_karmas(self):

old_link_karma = self._t.get('link_karma', 0)
old_comment_karma = self._t.get('comment_karma', 0)
if old_link_karma or old_comment_karma:
if include_old and (old_link_karma or old_comment_karma):
karmas.append((_('ancient history'),
_('really obscure karma from before it was cool to track per-subreddit'),
old_link_karma, old_comment_karma))
Expand Down

0 comments on commit a635c9c

Please sign in to comment.