File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -14,4 +14,6 @@ dictionaries returned by `pull_request_files.py
1414` views.py ` Aside from the flask code, it also contains code for APScheduler. It updates the ` files ` variable in the background
1515at specific intervals.
1616
17+ ![ Pulls-Screenshot] ( static/images/pulls-front.png )
18+
1719:-)
Original file line number Diff line number Diff line change 11from collections import defaultdict
22
33
4- def pr_by_file (pull_requests ):
4+ def get_files (pull_requests ):
55 files = defaultdict (set )
66 for pr in pull_requests :
77 for file in pr ['files' ]['nodes' ]:
88 filename = file ['path' ]
99 files [filename ].add (pr ['number' ])
10- return files
11-
12-
13- def change_values_to_list (pull_requests ):
14- files = pr_by_file (pull_requests )
1510 for filename , pr in files .items ():
1611 files [filename ] = list (pr )
12+ files [filename ].sort ()
1713 files = dict (sorted (files .items ()))
18- return files
14+ results = dict ()
15+ for file_name in files .keys ():
16+ if not file_name .startswith ('Misc' ):
17+ results [file_name ] = files [file_name ]
18+ return results
1919
2020
21- def main (pull_requests ):
22- return change_values_to_list (pull_requests )
21+ def get_titles (pull_requests ):
22+ pr_titles = dict ()
23+ for pr in pull_requests :
24+ pr_titles .update ({pr ['number' ]: pr ['title' ]})
25+ return pr_titles
Original file line number Diff line number Diff line change 1313headers = {'Authorization' : f'bearer { oauth_token } ' }
1414
1515
16+ class PullRequests :
17+ def __init__ (self , data ):
18+ self .pr_data = data
19+ self .files = process_pulls .get_files (self .pr_data )
20+ self .titles = process_pulls .get_titles (self .pr_data )
21+
22+
1623def get_pull_request_details (endCursor = None ):
1724 graphql_query = '''query($previousEndCursor:String) {
1825 repository(owner:"python", name:"cpython") {
@@ -57,14 +64,15 @@ def get_pull_request_details(endCursor=None):
5764def main ():
5865 page = 1
5966 response = get_pull_request_details ()
60- pull_requests = response ['data' ]['repository' ]['pullRequests' ]['nodes' ]
67+ results = response ['data' ]['repository' ]['pullRequests' ]['nodes' ]
6168 while response ['data' ]['repository' ]['pullRequests' ]['pageInfo' ]['hasNextPage' ]:
6269 page = page + 1
63- response = get_pull_request_details (response ['data' ]['repository' ]['pullRequests' ]['pageInfo' ]['endCursor' ])
64- pull_requests = pull_requests + response ['data' ]['repository' ]['pullRequests' ]['nodes' ]
65-
66- files = process_pulls .main (pull_requests )
67- return files
70+ response = get_pull_request_details (
71+ response ['data' ]['repository' ]['pullRequests' ]['pageInfo' ]['endCursor' ]
72+ )
73+ results = results + response ['data' ]['repository' ]['pullRequests' ]['nodes' ]
74+ pr_data = PullRequests (results )
75+ return pr_data
6876
6977
7078if __name__ == "__main__" :
Original file line number Diff line number Diff line change 1515 padding-top : 100px ;
1616 padding-bottom : 100px ;
1717 }
18+
19+ .pr-number {
20+ position : relative;
21+ display : inline-block;
22+ }
23+
24+ /* Tooltip text */
25+ .pr-number .pr-title {
26+ visibility : hidden;
27+ width : 200px ;
28+ background-color : black;
29+ color : # fff ;
30+ text-align : center;
31+ padding : 3px 3px 3px 3px ;
32+ margin-left : 5px ;
33+ border-radius : 7px ;
34+ position : absolute;
35+ z-index : 1 ;
36+ }
37+
38+ /* Show the tooltip text when you mouse over the tooltip container */
39+ .pr-number : hover .pr-title {
40+ visibility : visible;
41+ }
1842 </ style >
1943 < link rel ="stylesheet " href ="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css "
2044 integrity ="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm " crossorigin ="anonymous ">
4973 </ thead >
5074
5175 < tbody >
52- {% for file_name in results %}
76+ {% for file_name in results.files %}
5377 < tr >
5478 < td > < a href ="https://github.com/python/cpython/blob/master/{{file_name}} "> {{ file_name }}</ a > </ td >
55- {% for pr in results[file_name] %}
56- < td > < a href ="https://github.com/python/cpython/pull/{{pr}} " target ="_blank "> {{ pr }}</ a > </ td >
79+ {% for pr in results.files[file_name] %}
80+ < td class ="pr-number ">
81+ < a href ="https://github.com/python/cpython/pull/{{pr}} " target ="_blank "> {{ pr }}</ a >
82+ < span class ="pr-title "> {{ results.titles[pr] }}</ span >
83+ </ td >
5784 {% endfor %}
5885 </ tr >
5986 {% endfor %}
Original file line number Diff line number Diff line change 22import pull_request_files
33from apscheduler .schedulers .background import BackgroundScheduler
44
5- files = pull_request_files .main ()
5+ pr_data = pull_request_files .main ()
66
77
88def timed_job ():
9- global files
10- files = pull_request_files .main ()
9+ global pr_data
10+ pr_data = pull_request_files .main ()
1111
1212
1313scheduler = BackgroundScheduler ()
14- scheduler .add_job (timed_job , 'interval' , minutes = 1 )
14+ scheduler .add_job (timed_job , 'interval' , minutes = 5 )
1515scheduler .start ()
1616
1717
@@ -22,13 +22,7 @@ def timed_job():
2222@app .route ("/" )
2323@app .route ("/index" )
2424def index ():
25- results = files
26-
27- final_results = dict ()
28- for file_name in results .keys ():
29- if not file_name .startswith ('Misc' ):
30- final_results [file_name ] = results [file_name ]
31- return render_template ('index.html' , results = final_results )
25+ return render_template ('index.html' , results = pr_data )
3226
3327
3428if __name__ == '__main__' :
You can’t perform that action at this time.
0 commit comments