| |
@@ -0,0 +1,62 @@
|
| |
+ 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,
|
| |
+ validator=validators.fedorahosted_project,
|
| |
+ help="Name of the trac instance on fedorahosted.org")
|
| |
+ @argument(name="n_tickets",
|
| |
+ default=4,
|
| |
+ validator=validators.integer,
|
| |
+ help="The number of tickets to display.")
|
| |
+ def data(session, widget, project, n_tickets=4):
|
| |
+ 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'
|
| |
+ try:
|
| |
+ server = ServerProxy(url)
|
| |
+ tickets = server.ticket.query(filters)
|
| |
+ except:
|
| |
+ return dict(
|
| |
+ error='Invalid or wrongly configured project'
|
| |
+ )
|
| |
+
|
| |
+ output = []
|
| |
+ total_tickets = len(tickets)
|
| |
+ for idx, ticket in enumerate(tickets):
|
| |
+ 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,
|
| |
+ tickets=output,
|
| |
+ total_tickets=total_tickets,
|
| |
+ )
|
| |
+
|
| |
+
|
| |
+ @hint(topics=[_('trac.ticket.update'), _('trac.ticket.new')])
|
| |
+ def should_invalidate(message, session, widget):
|
| |
+ project = widget.config.get('project', '')
|
| |
+ url = 'https://fedorahosted.org/%s/' % project
|
| |
+ if '.trac.ticket' in message['topic']:
|
| |
+ if message['msg']['instance']['base_url'] == url:
|
| |
+ return True
|
| |
+ return False
|
| |
Confused by this line? But im assuming this wan't needed to fix this pr but was something needed to be done