From 78880b7e17d4e25bdeb20b28036d936a829554df Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 15:42:44 +0000 Subject: [PATCH 1/10] Rename the pagure repo validator to pagure_repo As otherwise we could conflict with other repo (distgit, github...) --- diff --git a/hubs/validators.py b/hubs/validators.py index 0dec579..9c2c276 100644 --- a/hubs/validators.py +++ b/hubs/validators.py @@ -30,5 +30,5 @@ def fmn_context(session, value): 'irc', 'email', 'android', 'desktop', 'hubs', ] -def repo(session, value): +def pagure_repo(session, value): return value diff --git a/hubs/widgets/pagure_pr.py b/hubs/widgets/pagure_pr.py index afd8b97..331bb7a 100644 --- a/hubs/widgets/pagure_pr.py +++ b/hubs/widgets/pagure_pr.py @@ -53,8 +53,8 @@ template = jinja2.Template(""" @argument(name="repo", default=None, - validator=validators.repo, - help="Repo") + validator=validators.pagure_repo, + help="Pagure repo name") def data(session, widget, repo): repo="pagure" url = '/'.join([pagure_url, repo, "pull-requests"]) From 26512d02743b43209dada53ec8ed578cdd075dad Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 15:43:17 +0000 Subject: [PATCH 2/10] Fix indentation --- diff --git a/hubs/widgets/pagure_pr.py b/hubs/widgets/pagure_pr.py index 331bb7a..9e38b2a 100644 --- a/hubs/widgets/pagure_pr.py +++ b/hubs/widgets/pagure_pr.py @@ -63,17 +63,20 @@ def data(session, widget, repo): total_req = data['total_requests'] all_pr = list() for i in range(0,total_req): - all_pr.append(dict( - pr_id=data['requests'][i]['id'], - pr_title=data['requests'][i]['title'][:45], - pr_openedby=data['requests'][i]['user']['name'], - pr_assignee=data['requests'][i]['assignee'], - )) + all_pr.append( + dict( + pr_id=data['requests'][i]['id'], + pr_title=data['requests'][i]['title'][:45], + pr_openedby=data['requests'][i]['user']['name'], + pr_assignee=data['requests'][i]['assignee'], + ) + ) all_pr.reverse() - return dict(all_pr=all_pr, - total_req=total_req, - repo=repo, -) + return dict( + all_pr=all_pr, + total_req=total_req, + repo=repo, + ) @hint() def should_invalidate(message, session, widget): From e38c26d85e1cda0761a9cfa90e9e13c17e4520ac Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 15:44:20 +0000 Subject: [PATCH 3/10] Adjust pagureissues to the new validator --- diff --git a/hubs/widgets/pagureissues.py b/hubs/widgets/pagureissues.py index 8ec1608..d429c52 100644 --- a/hubs/widgets/pagureissues.py +++ b/hubs/widgets/pagureissues.py @@ -99,8 +99,8 @@ template = jinja2.Template(""" @argument(name="repo", default=None, - validator=validators.repo, - help="Repo") + validator=validators.pagure_repo, + help="Pagure repo name") def data(session, widget, repo): repo = "pagure" From d7bcdf1c53d5c28fbe8aaa55fa3fd3f95afddb4e Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 15:44:32 +0000 Subject: [PATCH 4/10] Be consistent in the github widget regarding help message and validator --- diff --git a/hubs/widgets/githubissues.py b/hubs/widgets/githubissues.py index f142bb3..feabd5e 100644 --- a/hubs/widgets/githubissues.py +++ b/hubs/widgets/githubissues.py @@ -51,8 +51,8 @@ template = jinja2.Template(""" @argument(name="repo", default=None, - validator=validators.repo, - help="Repo") + validator=validators.github_organization, + help="Github Organization or username") def data(session, widget, display_number, org, repo): url = '/'.join(['https://api.github.com/repos',org,repo,"issues"]) issue_response = requests.get(url) From 5cc2bf3309f1b13091ac2cb58f3d6c53bd7e34e1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 16:05:13 +0000 Subject: [PATCH 5/10] Remove
tags and fix indentation of the template --- diff --git a/hubs/widgets/pagure_pr.py b/hubs/widgets/pagure_pr.py index 9e38b2a..f041113 100644 --- a/hubs/widgets/pagure_pr.py +++ b/hubs/widgets/pagure_pr.py @@ -9,42 +9,43 @@ chrome = panel("Pagure: Newest Open Pull Requests") pagure_url = "https://pagure.io/api/0" template = jinja2.Template(""" -
-
- {% for i in range(0,total_req) %} -
- - - - - -
- #{{ all_pr[i]['pr_id'] }} - - {{ all_pr[i]['pr_title'] }} ... -
- - - - - -
- - Opened by {{ all_pr[i]['pr_openedby'] }} - {% if all_pr[i]['pr_assignee'] %} -
Assigned to {{ all_pr[i]['pr_assignee'] }}
- {% endif %} -
-
- - - -
-
- {%endfor%} -
+
+ {% for i in range(0,total_req) %} +
+ + + + + +
+ Pagure logo + #{{ all_pr[i]['pr_id'] }} + + {{ all_pr[i]['pr_title'] }} ... +
+ + + + + +
+ + Opened by {{ all_pr[i]['pr_openedby'] }} + {% if all_pr[i]['pr_assignee'] %} +
Assigned to {{ all_pr[i]['pr_assignee'] }}
+ {% endif %} +
+
+ + + +
+
+ {%endfor%}
All Pull-Requests
From cd3b70b5220db284ab38e009f37b8e5924021f00 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 16:38:48 +0000 Subject: [PATCH 6/10] Rework the pagure widget for open PR - Adjust the HTML to be more consistent with the layout in pagure itself and use the entire container. - Include the project name since at the end we want to be able to list Open PRs for multiple projects hosted on pagure. - Change the title a little to not mis-lead that the PR are on pagure not necessarily about pagure --- diff --git a/hubs/widgets/pagure_pr.py b/hubs/widgets/pagure_pr.py index f041113..2c5207e 100644 --- a/hubs/widgets/pagure_pr.py +++ b/hubs/widgets/pagure_pr.py @@ -4,48 +4,66 @@ import jinja2 import requests from hubs.widgets.base import argument import hubs.validators as validators -chrome = panel("Pagure: Newest Open Pull Requests") +chrome = panel("Newest Open Pull Requests on Pagure") pagure_url = "https://pagure.io/api/0" template = jinja2.Template(""" @@ -63,16 +81,22 @@ def data(session, widget, repo): data = response.json() total_req = data['total_requests'] all_pr = list() - for i in range(0,total_req): + for i in range(0, total_req): + pr_project_user = None + if data['requests'][i]['project']['parent']: + pr_project_user = data['requests'][i]['project']['user']['username'] + all_pr.append( dict( + pr_project_name=data['requests'][i]['project']['name'], + pr_project_user=pr_project_user, pr_id=data['requests'][i]['id'], pr_title=data['requests'][i]['title'][:45], pr_openedby=data['requests'][i]['user']['name'], pr_assignee=data['requests'][i]['assignee'], ) ) - all_pr.reverse() + return dict( all_pr=all_pr, total_req=total_req, From 64225d46dbc8bc31530c547fa4f11b72e68e2d4e Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 16:53:12 +0000 Subject: [PATCH 7/10] pep8 fixes --- diff --git a/hubs/widgets/pagure_pr.py b/hubs/widgets/pagure_pr.py index 2c5207e..d86272c 100644 --- a/hubs/widgets/pagure_pr.py +++ b/hubs/widgets/pagure_pr.py @@ -10,7 +10,8 @@ pagure_url = "https://pagure.io/api/0" template = jinja2.Template("""
- +
@@ -31,16 +32,16 @@ template = jinja2.Template(""" target="_blank"> {{ pr['pr_project_user'] }}/{{ pr['pr_project_name'] }} {% else %} - + {{ pr['pr_project_name'] }} {% endif %} @@ -65,17 +66,22 @@ template = jinja2.Template("""
Project #{{ pr['pr_id'] }} - + {{ pr['pr_title'] }} ...
-
All Pull-Requests
+
+ + All Pull-Requests + +
""") + @argument(name="repo", default=None, validator=validators.pagure_repo, help="Pagure repo name") def data(session, widget, repo): - repo="pagure" + repo = "pagure" url = '/'.join([pagure_url, repo, "pull-requests"]) response = requests.get(url) data = response.json() @@ -84,16 +90,17 @@ def data(session, widget, repo): for i in range(0, total_req): pr_project_user = None if data['requests'][i]['project']['parent']: - pr_project_user = data['requests'][i]['project']['user']['username'] + pr_project_user = \ + data['requests'][i]['project']['user']['username'] all_pr.append( dict( - pr_project_name=data['requests'][i]['project']['name'], - pr_project_user=pr_project_user, - pr_id=data['requests'][i]['id'], - pr_title=data['requests'][i]['title'][:45], - pr_openedby=data['requests'][i]['user']['name'], - pr_assignee=data['requests'][i]['assignee'], + pr_project_name=data['requests'][i]['project']['name'], + pr_project_user=pr_project_user, + pr_id=data['requests'][i]['id'], + pr_title=data['requests'][i]['title'][:45], + pr_openedby=data['requests'][i]['user']['name'], + pr_assignee=data['requests'][i]['assignee'], ) ) @@ -103,6 +110,7 @@ def data(session, widget, repo): repo=repo, ) + @hint() def should_invalidate(message, session, widget): - raise NotImplementedError + raise NotImplementedError From 3ce7a92b3f7e393f361cb1b05abf01f44ffb0c76 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 17:59:27 +0000 Subject: [PATCH 8/10] Adjust CSS id in the HTML to reflect what they are --- diff --git a/hubs/widgets/pagure_pr.py b/hubs/widgets/pagure_pr.py index d86272c..0e99f56 100644 --- a/hubs/widgets/pagure_pr.py +++ b/hubs/widgets/pagure_pr.py @@ -10,11 +10,11 @@ pagure_url = "https://pagure.io/api/0" template = jinja2.Template("""
- - + From a534b962416df1ed7a625f117f898ed23bde12dd Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 17:59:46 +0000 Subject: [PATCH 9/10] Let's use a more pythonic loop rather than relying on range() --- diff --git a/hubs/widgets/pagure_pr.py b/hubs/widgets/pagure_pr.py index 0e99f56..22b5e4b 100644 --- a/hubs/widgets/pagure_pr.py +++ b/hubs/widgets/pagure_pr.py @@ -81,26 +81,24 @@ template = jinja2.Template(""" validator=validators.pagure_repo, help="Pagure repo name") def data(session, widget, repo): - repo = "pagure" url = '/'.join([pagure_url, repo, "pull-requests"]) response = requests.get(url) data = response.json() total_req = data['total_requests'] all_pr = list() - for i in range(0, total_req): + for request in data['requests']: pr_project_user = None - if data['requests'][i]['project']['parent']: - pr_project_user = \ - data['requests'][i]['project']['user']['username'] + if request['project']['parent']: + pr_project_user = request['project']['user']['username'] all_pr.append( dict( - pr_project_name=data['requests'][i]['project']['name'], + pr_project_name=request['project']['name'], pr_project_user=pr_project_user, - pr_id=data['requests'][i]['id'], - pr_title=data['requests'][i]['title'][:45], - pr_openedby=data['requests'][i]['user']['name'], - pr_assignee=data['requests'][i]['assignee'], + pr_id=request['id'], + pr_title=request['title'][:45], + pr_openedby=request['user']['name'], + pr_assignee=request['assignee'], ) ) From bbcdf25fe5e5b908ac290ac85c6943ab6f01c353 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 09 2016 18:36:59 +0000 Subject: [PATCH 10/10] Use short title in the link but the full one in the title of the link --- diff --git a/hubs/widgets/pagure_pr.py b/hubs/widgets/pagure_pr.py index 22b5e4b..055d37a 100644 --- a/hubs/widgets/pagure_pr.py +++ b/hubs/widgets/pagure_pr.py @@ -41,7 +41,8 @@ template = jinja2.Template(""" @@ -86,6 +87,7 @@ def data(session, widget, repo): data = response.json() total_req = data['total_requests'] all_pr = list() + for request in data['requests']: pr_project_user = None if request['project']['parent']: @@ -97,6 +99,7 @@ def data(session, widget, repo): pr_project_user=pr_project_user, pr_id=request['id'], pr_title=request['title'][:45], + pr_title_full=request['title'], pr_openedby=request['user']['name'], pr_assignee=request['assignee'], )
ProjectProject Pull-Request Reporter Assignee #{{ pr['pr_id'] }} + pr['pr_id'] }}" target="_blank" + title="{{ pr['pr_title_full'] }}"> {{ pr['pr_title'] }} ...