1- from github import Github , Repository , GithubException
21import csv
2+ import pytz
3+
4+ from github import Github , Repository , GithubException
35
46EMPTY_FIELD = 'Empty field'
57
8+
69def login (token ):
710 client = Github (login_or_token = token )
811 try :
@@ -31,7 +34,8 @@ def get_next_repo(client: Github, repositories):
3134
3235
3336def log_commit_to_csv (info , csv_name ):
34- fieldnames = ['repository name' , 'commit id' , 'author name' , 'author login' , 'author email' , 'date and time' , 'changed files' ]
37+ fieldnames = ['repository name' , 'commit id' , 'author name' , 'author login' , 'author email' , 'date and time' ,
38+ 'changed files' ]
3539 with open (csv_name , 'a' , newline = '' ) as file :
3640 writer = csv .DictWriter (file , fieldnames = fieldnames )
3741 writer .writerow (info )
@@ -43,15 +47,17 @@ def log_commit_to_stdout(info):
4347
4448def log_repository_commits (repository : Repository , csv_name , start , finish ):
4549 for commit in repository .get_commits ():
46- if commit .commit .author .date < start or commit .commit .author .date > finish :
50+ if commit .commit .author .date .astimezone (
51+ pytz .timezone ('Europe/Moscow' )) < start or commit .commit .author .date .astimezone (
52+ pytz .timezone ('Europe/Moscow' )) > finish :
4753 continue
4854 if commit .commit is not None :
4955 info = {'repository name' : repository .full_name ,
5056 'commit id' : commit .commit .sha ,
5157 'author name' : commit .commit .author .name ,
5258 'author login' : EMPTY_FIELD ,
5359 'author email' : EMPTY_FIELD ,
54- 'date and time' : commit .commit .author .date ,
60+ 'date and time' : commit .commit .author .date . astimezone ( pytz . timezone ( 'Europe/Moscow' )) ,
5561 'changed files' : '; ' .join ([file .filename for file in commit .files ])}
5662
5763 if commit .author is not None :
@@ -79,12 +85,13 @@ def log_issue_to_stdout(info):
7985
8086def log_repository_issues (repository : Repository , csv_name , start , finish ):
8187 for issue in repository .get_issues (state = 'all' ):
82- if issue .created_at < start or issue .created_at > finish :
88+ if issue .created_at .astimezone (pytz .timezone ('Europe/Moscow' )) < start or issue .created_at .astimezone (
89+ pytz .timezone ('Europe/Moscow' )) > finish :
8390 continue
8491 info_tmp = {
8592 'repository name' : repository .full_name , 'number' : issue .number , 'title' : issue .title ,
8693 'state' : issue .state , 'task' : issue .body ,
87- 'created at' : issue .created_at ,
94+ 'created at' : issue .created_at . astimezone ( pytz . timezone ( 'Europe/Moscow' )) ,
8895 'creator name' : EMPTY_FIELD ,
8996 'creator login' : EMPTY_FIELD ,
9097 'creator email' : EMPTY_FIELD if issue .user .email is None else issue .user .email ,
@@ -124,10 +131,11 @@ def log_repository_issues(repository: Repository, csv_name, start, finish):
124131
125132
126133def log_pr_to_csv (info , csv_name ):
127- fieldnames = ['repository name' , 'title' , 'state' , 'commit into' , 'commit from' , 'created at' , 'creator name' ,
134+ fieldnames = ['repository name' , 'title' , 'id' , ' state' , 'commit into' , 'commit from' , 'created at' , 'creator name' ,
128135 'creator login' , 'creator email' ,
129136 'changed files' , 'comment body' , 'comment created at' , 'comment author name' , 'comment author login' ,
130- 'comment author email' , 'merger name' , 'merger login' , 'merger email' , 'source branch' , 'target branch' ]
137+ 'comment author email' , 'merger name' , 'merger login' , 'merger email' , 'source branch' ,
138+ 'target branch' ]
131139 with open (csv_name , 'a' , newline = '' ) as file :
132140 writer = csv .DictWriter (file , fieldnames = fieldnames )
133141 writer .writerow (info )
@@ -139,15 +147,17 @@ def log_pr_to_stdout(info):
139147
140148def log_repositories_pr (repository : Repository , csv_name , start , finish ):
141149 for pull in repository .get_pulls (state = 'all' ):
142- if pull .created_at < start or pull .created_at > finish :
150+ if pull .created_at .astimezone (pytz .timezone ('Europe/Moscow' )) < start or pull .created_at .astimezone (
151+ pytz .timezone ('Europe/Moscow' )) > finish :
143152 continue
144153 info_tmp = {
145154 'repository name' : repository .full_name ,
146155 'title' : pull .title ,
156+ 'id' : pull .number ,
147157 'state' : pull .state ,
148158 'commit into' : pull .base .label ,
149159 'commit from' : pull .head .label ,
150- 'created at' : pull .created_at ,
160+ 'created at' : pull .created_at . astimezone ( pytz . timezone ( 'Europe/Moscow' )) ,
151161 'creator name' : EMPTY_FIELD if pull .user .name is None else pull .user .name ,
152162 'creator login' : pull .user .login ,
153163 'creator email' : pull .user .email ,
@@ -191,6 +201,7 @@ def log_pull_requests(client: Github, repositories, csv_name, start, finish):
191201 (
192202 'repository name' ,
193203 'title' ,
204+ 'id' ,
194205 'state' ,
195206 'commit into' ,
196207 'commit from' ,
0 commit comments