From 166b4fd6387ee4620bbedbb1d7151509a47d4f12 Mon Sep 17 00:00:00 2001 From: Vivek Anand Date: Oct 05 2016 10:03:26 +0000 Subject: [PATCH 1/3] some beautification for contact widget --- diff --git a/hubs/widgets/contact.py b/hubs/widgets/contact.py index 8ebce6f..b76873c 100644 --- a/hubs/widgets/contact.py +++ b/hubs/widgets/contact.py @@ -1,10 +1,10 @@ -from hubs.widgets.chrome import panel -from hubs.widgets import templating import flask -import hubs.models + import fedmsg.config import fedmsg.meta -import datetime +import hubs.models +from hubs.widgets.chrome import panel +from hubs.widgets import templating config = fedmsg.config.load_config() @@ -15,6 +15,11 @@ position = 'both' # TODO: update this section when FAS3 is deployed def data(session, widget, **kwargs): + ''' Data for Contact widget. Checks if the hub associated + with widget is of a user or not. If the hub is of a user, return + data related to the user else, hub is of a fedora team + - return data related to the team ''' + hub = widget.hub if hub.user_hub: usergroup = True @@ -22,14 +27,14 @@ def data(session, widget, **kwargs): email = user.username + '@fedoraproject.org' karma_url = flask.url_for('plus_plus_status', user=user.username) fas_info = { - 'usergroup': usergroup, - 'location': 'United States', - 'timezone': 'UTC', - 'email': email, - 'ircnick': user.username, - 'karma_url': karma_url, - 'account_age': 'Oct 2010', - } + 'usergroup': usergroup, + 'location': 'United States', + 'timezone': 'UTC', + 'email': email, + 'ircnick': user.username, + 'karma_url': karma_url, + 'account_age': 'Oct 2010', + } else: usergroup = False # TODO: update this section integrating with FAS3 @@ -39,22 +44,20 @@ def data(session, widget, **kwargs): elif hub.name == 'designteam': ircchannel = 'design' hubname = 'design' - elif hub.name == 'commops': - ircchannel == 'commops' - hubname = 'commops' elif hub.name == 'marketing': ircchannel = 'mktg' hubname = 'marketing' else: ircchannel = hub.name hubname = hub.name - mailinglist = 'https://lists.fedoraproject.org/archives/list/{}@lists.fedoraproject.org/'.format(hubname) + mailinglist = 'https://lists.fedoraproject.org/archives/list/{}' + '@lists.fedoraproject.org/'.format(hubname) wikilink = 'https://fedoraproject.org/wiki/' + hubname fas_info = { - 'usergroup': usergroup, - 'hubname': hubname, - 'ircchannel': 'fedora-%s'%ircchannel, - 'mailinglist': mailinglist, - 'wikilink': wikilink, - } + 'usergroup': usergroup, + 'hubname': hubname, + 'ircchannel': 'fedora-%s' % ircchannel, + 'mailinglist': mailinglist, + 'wikilink': wikilink, + } return fas_info From 8be6a4fcbe56d9fc1041c26bf2cf3cf74ebd79b3 Mon Sep 17 00:00:00 2001 From: Vivek Anand Date: Oct 05 2016 10:03:31 +0000 Subject: [PATCH 2/3] some beautification for fedorahosted widget --- diff --git a/hubs/widgets/fhosted.py b/hubs/widgets/fhosted.py index 6a54827..c2bcd45 100644 --- a/hubs/widgets/fhosted.py +++ b/hubs/widgets/fhosted.py @@ -1,16 +1,15 @@ +from xmlrpclib import ServerProxy + +import hubs.validators as validators from hubs.widgets.chrome import panel from hubs.hinting import hint, prefixed as _ from hubs.widgets.base import argument from hubs.widgets import templating -import hubs.validators as validators -import requests chrome = panel("Fedorahosted: Open Tickets") template = templating.environment.get_template('templates/fedorahosted.html') position = 'right' -from xmlrpclib import ServerProxy - @argument(name="project", default=None, @@ -21,11 +20,17 @@ from xmlrpclib import ServerProxy validator=validators.integer, help="The number of tickets to display.") def data(session, widget, project, n_tickets=4): + ''' Data for Fedorahosted widget. + Queries Fedorahosted via xmlrpc for tickets. ''' + n_tickets = int(n_tickets) url = 'https://fedorahosted.org/%s/rpc' % project filters = 'status=accepted&status=assigned&status=new&status=reopened'\ '&col=id&col=summary&col=status&col=owner&col=type&col=priority'\ '&col=milestone&col=changetime&order=changetime' + + # get the tickets based on the filters + # returns a list of ticket ids try: server = ServerProxy(url) tickets = server.ticket.query(filters) @@ -36,14 +41,13 @@ def data(session, widget, project, n_tickets=4): output = [] total_tickets = len(tickets) - for idx, ticket in enumerate(tickets): + for ticket in tickets[:n_tickets]: + # get the details of the ticket ticket = server.ticket.get(ticket) data = ticket[3] data['id'] = ticket[0] data['short_summary'] = data['summary'][:45] output.append(data) - if idx + 1 >= n_tickets: - break return dict( project=project, @@ -54,6 +58,9 @@ def data(session, widget, project, n_tickets=4): @hint(topics=[_('trac.ticket.update'), _('trac.ticket.new')]) def should_invalidate(message, session, widget): + ''' Checks if the Fedorahosted widget needs an update. + Called by backend daemon listening to fedmsg ''' + project = widget.config.get('project', '') url = 'https://fedorahosted.org/%s/' % project if '.trac.ticket' in message['topic']: From 793229ad83b2757b01db79ee6a363b32599cb217 Mon Sep 17 00:00:00 2001 From: Vivek Anand Date: Oct 05 2016 10:03:31 +0000 Subject: [PATCH 3/3] some beautification in github issues widget --- diff --git a/hubs/widgets/githubissues.py b/hubs/widgets/githubissues.py index 295c76b..986ff11 100755 --- a/hubs/widgets/githubissues.py +++ b/hubs/widgets/githubissues.py @@ -1,9 +1,10 @@ -from hubs.widgets.chrome import panel +import requests + from hubs.hinting import hint -from hubs.widgets.base import argument from hubs.widgets import templating +from hubs.widgets.chrome import panel +from hubs.widgets.base import argument import hubs.validators as validators -import requests chrome = panel("Github: Newest Open Tickets") template = templating.environment.get_template('templates/githubissues.html') @@ -15,33 +16,36 @@ position = 'right' validator=validators.github_organization, help="Github Organization or username") def data(session, widget, display_number, org, repo): + ''' Data for Github Issues widget. Queries github api for issues ''' + url = '/'.join(['https://api.github.com/repos', org, repo, "issues"]) - issue_response = requests.get(url) - data = issue_response.json() - all_issues = list() - for i in range(0, 10): - issue_details = dict() - issue_num = data[i]['number'] - issue_title = data[i]['title'] - issue_openedby = data[i]['user']['login'] - if(data[i]['assignee'] is not None): - issue_assignee = data[i]['assignee']['login'] - else: - issue_assignee = data[i]['assignee'] - issue_details['num'] = issue_num - issue_details['title'] = issue_title - issue_details['openedby'] = issue_openedby + issues = requests.get(url).json() + + all_issues = [] + for issue in issues[:10]: + issue_details = {} + issue_details['num'] = issue['number'] + issue_details['title'] = issue['title'] + issue_details['openedby'] = issue['user']['login'] + + issue_assignee = None + if issue['assignee'] is not None: + issue_assignee = issue['assignee']['login'] + issue_details['assignee'] = issue_assignee all_issues.append(issue_details) - all_issues.reverse() + return dict( org=org, repo=repo, - all_issues=all_issues, + all_issues=all_issues.reverse(), display_number=display_number, ) @hint() def should_invalidate(message, session, widget): + ''' Checks if the Github Issue widget needs an update. + Called by a backend daemon listening to fedmsg ''' + raise NotImplementedError