From 4c44dfe8f6b288eaf125a213dd8e4a65f4427226 Mon Sep 17 00:00:00 2001 From: Devyani Kota Date: Jan 14 2016 23:15:40 +0000 Subject: WIP : Initial commit for hub_badges widget --- diff --git a/hubs/validators.py b/hubs/validators.py index 8248b29..c4090d7 100644 --- a/hubs/validators.py +++ b/hubs/validators.py @@ -17,6 +17,10 @@ def username(session, value): openid = 'http://%s.id.fedoraproject.org/' % value return not hubs.models.User.by_openid(session, openid) is None +def tag(session, value): + # TODO : WIP -- verify that this is a valid badge tag. + return value + def fmn_context(session, value): # TODO get this from the fedmsg config. return value in [ diff --git a/hubs/widgets/__init__.py b/hubs/widgets/__init__.py index 416f7d6..a1fabc1 100644 --- a/hubs/widgets/__init__.py +++ b/hubs/widgets/__init__.py @@ -5,6 +5,7 @@ from hubs.widgets import sticky from hubs.widgets import about from hubs.widgets import avatar from hubs.widgets import badges +from hubs.widgets import hub_badges from hubs.widgets import fedmsgs from hubs.widgets import fedmsgstats from hubs.widgets import feed @@ -26,6 +27,7 @@ registry = { 'about': about, 'avatar': avatar, 'badges': badges, + 'hub_badges': hub_badges, 'fedmsgs': fedmsgs, 'fedmsgstats': fedmsgstats, 'feed': feed, diff --git a/hubs/widgets/hub_badges.py b/hubs/widgets/hub_badges.py new file mode 100644 index 0000000..052bea0 --- /dev/null +++ b/hubs/widgets/hub_badges.py @@ -0,0 +1,53 @@ +import operator + +import requests + +from hubs.hinting import hint, prefixed as _ +from hubs.widgets.base import argument + +import jinja2 + + +import hubs.validators as validators + + +template = jinja2.Template(""" +
+{% for badge in assertions[:10] %} + + +{%endfor%} +
+""") + +from hubs.widgets.chrome import panel +chrome = panel("Infrastructure Badges") + + +@argument(name="tag", + default=None, + validator=validators.tag, + help="A FAS badge tag.") +def data(session, widget, tag): + url = "https://badges.fedoraproject.org/hubs/{tag}/json" + # TODO : WIP - API for Tahrir, badge_tags, url + url = url.format(tag=tag) + response = requests.get(url) + assertions = response.json()['assertions'] + print assertions + key = operator.itemgetter('issued') + return dict(assertions=sorted(assertions, key=key, reverse=True)) + + +@hint(topics=[_('hubs.widget.update'), _('fedbadges.badge.award')]) +def should_invalidate(message, session, widget): + if message['topic'].endswith('hubs.widget.update'): + if message['msg']['widget']['id'] != widget.id: + return True + + # if message['topic'].endswith('fedbadges.badge.award'): + # username = widget.config['username'] + # if message['msg']['user']['username'] == username: + # return True + + return False diff --git a/populate.py b/populate.py index 4bb1b21..4adf738 100755 --- a/populate.py +++ b/populate.py @@ -12,7 +12,7 @@ session = hubs.models.init(fedmsg_config['hubs.sqlalchemy.uri'], True, True) users = ['mrichard', 'duffy', 'ryanlerch', 'gnokii', 'nask0', 'abompard', 'decause', 'ralph', 'lmacken', 'croberts', 'mattdm', - 'pravins'] + 'pravins', 'devyani7'] for username in users: fullname = 'Full Name Goes Here' openid = '%s.id.fedoraproject.org' % username @@ -200,6 +200,9 @@ hub.widgets.append(widget) widget = hubs.models.Widget(plugin='dummy', index=3, left=True) hub.widgets.append(widget) +widget = hubs.models.Widget(plugin='hub_badges', index=4, left=True, + _config=json.dumps({'tag': tag, })) +hub.widgets.append(widget) hub.subscribe(session, hubs.models.User.by_openid(session, 'ralph.id.fedoraproject.org'), 'owner') hub.subscribe(session, hubs.models.User.by_openid(session, 'abompard.id.fedoraproject.org'), 'owner')