Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
feat(*): Show PR title on hover over PR number (#3)
  • Loading branch information
GeekyShacklebolt authored and CuriousLearner committed Jul 13, 2019
1 parent 8f4be4c commit a0748d2
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 29 deletions.
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -14,4 +14,6 @@ dictionaries returned by `pull_request_files.py
`views.py` Aside from the flask code, it also contains code for APScheduler. It updates the `files` variable in the background
at specific intervals.

![Pulls-Screenshot](static/images/pulls-front.png)

:-)
21 changes: 12 additions & 9 deletions process_pulls.py
@@ -1,22 +1,25 @@
from collections import defaultdict


def pr_by_file(pull_requests):
def get_files(pull_requests):
files = defaultdict(set)
for pr in pull_requests:
for file in pr['files']['nodes']:
filename = file['path']
files[filename].add(pr['number'])
return files


def change_values_to_list(pull_requests):
files = pr_by_file(pull_requests)
for filename, pr in files.items():
files[filename] = list(pr)
files[filename].sort()
files = dict(sorted(files.items()))
return files
results = dict()
for file_name in files.keys():
if not file_name.startswith('Misc'):
results[file_name] = files[file_name]
return results


def main(pull_requests):
return change_values_to_list(pull_requests)
def get_titles(pull_requests):
pr_titles = dict()
for pr in pull_requests:
pr_titles.update({pr['number']: pr['title']})
return pr_titles
20 changes: 14 additions & 6 deletions pull_request_files.py
Expand Up @@ -13,6 +13,13 @@
headers = {'Authorization': f'bearer {oauth_token}'}


class PullRequests:
def __init__(self, data):
self.pr_data = data
self.files = process_pulls.get_files(self.pr_data)
self.titles = process_pulls.get_titles(self.pr_data)


def get_pull_request_details(endCursor=None):
graphql_query = '''query($previousEndCursor:String) {
repository(owner:"python", name:"cpython") {
Expand Down Expand Up @@ -57,14 +64,15 @@ def get_pull_request_details(endCursor=None):
def main():
page = 1
response = get_pull_request_details()
pull_requests = response['data']['repository']['pullRequests']['nodes']
results = response['data']['repository']['pullRequests']['nodes']
while response['data']['repository']['pullRequests']['pageInfo']['hasNextPage']:
page = page + 1
response = get_pull_request_details(response['data']['repository']['pullRequests']['pageInfo']['endCursor'])
pull_requests = pull_requests + response['data']['repository']['pullRequests']['nodes']

files = process_pulls.main(pull_requests)
return files
response = get_pull_request_details(
response['data']['repository']['pullRequests']['pageInfo']['endCursor']
)
results = results + response['data']['repository']['pullRequests']['nodes']
pr_data = PullRequests(results)
return pr_data


if __name__ == "__main__":
Expand Down
Binary file added static/images/pulls-front.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 30 additions & 3 deletions templates/index.html
Expand Up @@ -15,6 +15,30 @@
padding-top: 100px;
padding-bottom: 100px;
}

.pr-number {
position: relative;
display: inline-block;
}

/* Tooltip text */
.pr-number .pr-title {
visibility: hidden;
width: 200px;
background-color: black;
color: #fff;
text-align: center;
padding: 3px 3px 3px 3px;
margin-left: 5px;
border-radius: 7px;
position: absolute;
z-index: 1;
}

/* Show the tooltip text when you mouse over the tooltip container */
.pr-number:hover .pr-title {
visibility: visible;
}
</style>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
Expand Down Expand Up @@ -49,11 +73,14 @@
</thead>

<tbody>
{% for file_name in results %}
{% for file_name in results.files %}
<tr>
<td><a href="https://github.com/python/cpython/blob/master/{{file_name}}">{{ file_name }}</a></td>
{% for pr in results[file_name] %}
<td><a href="https://github.com/python/cpython/pull/{{pr}}" target="_blank">{{ pr }}</a></td>
{% for pr in results.files[file_name] %}
<td class="pr-number">
<a href="https://github.com/python/cpython/pull/{{pr}}" target="_blank">{{ pr }}</a>
<span class="pr-title">{{ results.titles[pr] }}</span>
</td>
{% endfor %}
</tr>
{% endfor %}
Expand Down
16 changes: 5 additions & 11 deletions views.py
Expand Up @@ -2,16 +2,16 @@
import pull_request_files
from apscheduler.schedulers.background import BackgroundScheduler

files = pull_request_files.main()
pr_data = pull_request_files.main()


def timed_job():
global files
files = pull_request_files.main()
global pr_data
pr_data = pull_request_files.main()


scheduler = BackgroundScheduler()
scheduler.add_job(timed_job, 'interval', minutes=1)
scheduler.add_job(timed_job, 'interval', minutes=5)
scheduler.start()


Expand All @@ -22,13 +22,7 @@ def timed_job():
@app.route("/")
@app.route("/index")
def index():
results = files

final_results = dict()
for file_name in results.keys():
if not file_name.startswith('Misc'):
final_results[file_name] = results[file_name]
return render_template('index.html', results=final_results)
return render_template('index.html', results=pr_data)


if __name__ == '__main__':
Expand Down

0 comments on commit a0748d2

Please sign in to comment.