From 8ac2a2f6431436a4fbe041ac3e3e5b269361118f Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 18:27:03 +0000 Subject: Rework the widget for issues on pagure --- diff --git a/hubs/widgets/pagureissues.py b/hubs/widgets/pagureissues.py index 8ec1608..9fa8f76 100644 --- a/hubs/widgets/pagureissues.py +++ b/hubs/widgets/pagureissues.py @@ -5,98 +5,78 @@ import hubs.validators as validators import jinja2 import requests -chrome = panel("Pagure: Newest Open Tickets") +chrome = panel("Newest Open Tickets on Pagure") pagure_url = "https://pagure.io/api/0" template = jinja2.Template(""" -
- {% if message == "None" %} -
- {% if total<3 %} - {% for i in range(0,total) %} -
- - - - - -
- #{{ all_issues[i]['id'] }} - - {{ all_issues[i]['title'] }} -
- - - - - -
- - Opened by {{ all_issues[i]['user'] }} - {% if all_issues[i]['assignee']|string() == "None" %} -
Unclaimed - {% else %} -
Assigned by {{ all_issues[i]['assignee'] }} - {% endif %} -
-
- - - -
-
+
+ + + + + + + + + + + + + {% for issue in all_issues %} + + + + + + {% endfor %} - {% else %} - {% for i in range(0,3) %} -
-
ProjectIssueReporterAssignee
+ {% if issue['issue_project_user'] %} + + {{ issue['issue_project_user'] }}/{{ issue['issue_project_name'] }} + {% else %} + + {{ issue['issue_project_name'] }} + {% endif %} + + + #{{ issue['issue_id'] }} + + {{ issue['issue_title'] }} ... + + + + {{ issue['issue_openedby'] }} + + + {% if issue['issue_assignee'] %} + + {{issue['issue_assignee'] }} + + {% else %} + unassigned + {% endif %} +
- - - - -
- #{{ all_issues[i]['id'] }} - - {{ all_issues[i]['title'] }} -
- - - - - -
- - Opened by {{ all_issues[i]['user'] }} - {% if all_issues[i]['assignee']|string() == "None" %} -
Unclaimed - {% else %} -
Assigned to {{ all_issues[i]['assignee'] }} - {% endif %} -
-
- - - -
-
- {% endfor %} - {% endif %} -
-
-
All Issues
-
- {% else %} -
- Not a valid repo + + +
+
+ + All Issues + +
- {% endif %} + """) + @argument(name="repo", default=None, validator=validators.repo, @@ -104,45 +84,44 @@ template = jinja2.Template(""" def data(session, widget, repo): repo = "pagure" - projects_response = requests.get("https://pagure.io/api/0/projects") - projects_data = projects_response.json() - total_projects = projects_data['total_projects'] - all_projects = list() - for i in range(0, total_projects): - all_projects.append(projects_data['projects'][i]['name']) - if repo not in all_projects: - message = "Not a valid project" - return dict( - message=message, - ) - else: - message = "None" - url = '/'.join([pagure_url, repo, "issues"]) - issue_response = requests.get(url) - data = issue_response.json() - total = data['total_issues'] - all_issues = list() - for i in range(0,total): - issue_details = dict() - issue_id=data['issues'][i]['id'] - issue_title=data['issues'][i]['title'] - issue_user=data['issues'][i]['user']['name'] - if(data['issues'][i]['assignee']!=None): - issue_assignee=data['issues'][i]['assignee']['name'] + url = '/'.join([pagure_url, repo, "issues"]) + issue_response = requests.get(url) + data = issue_response.json() + total = data['total_issues'] + + all_issues = list() + for issue in data['issues']: + + issue_assignee = None + if issue['assignee']: + issue_assignee=issue['assignee']['name'] + + issue_project_user = None + if 'project' in issue: + issue_project_name = issue['project']['name'] + if issue['project']['parent']: + issue_project_user = issue['project']['user']['username'] else: - issue_assignee=data['issues'][i]['assignee'] - issue_details['id']=issue_id - issue_details['title']=issue_title - issue_details['user']=issue_user - issue_details['assignee']=issue_assignee - all_issues.append(issue_details) - all_issues.reverse() - return dict( + issue_project_name = repo + + all_issues.append( + dict( + issue_project_name=issue_project_name, + issue_project_user=issue_project_user, + issue_id=issue['id'], + issue_title=issue['title'], + issue_openedby=issue['user']['name'], + issue_assignee=issue_assignee, + ) + ) + + all_issues.reverse() + + return dict( repo=repo, total=total, all_issues=all_issues, - message = message, - ) + ) @hint()