33
44from github import Github , Repository , GithubException
55
6+ from github import Github , Repository , GithubException , PullRequest
7+
68EMPTY_FIELD = 'Empty field'
79
810
@@ -33,6 +35,24 @@ def get_next_repo(client: Github, repositories):
3335 yield repo
3436
3537
38+ def get_assignee_story (github_object ):
39+ assignee_result = ""
40+ events = github_object .get_issue_events () if type (
41+ github_object ) is PullRequest .PullRequest else github_object .get_events ()
42+ for event in events :
43+ if event .event == "assigned" or event .event == "unassigned" :
44+ date = event .created_at
45+ if event .event == "assigned" :
46+ assigner = github_object .user .login
47+ assignee = event .assignee .login
48+ assignee_result += f"{ date } : { assigner } -> { assignee } ; "
49+ else :
50+ assigner = github_object .user .login
51+ assignee = event .assignee .login
52+ assignee_result += f"{ date } : { assigner } -/> { assignee } ; "
53+ return assignee_result
54+
55+
3656def log_commit_to_csv (info , csv_name ):
3757 fieldnames = ['repository name' , 'commit id' , 'author name' , 'author login' , 'author email' , 'date and time' ,
3858 'changed files' ]
@@ -73,7 +93,8 @@ def log_repository_commits(repository: Repository, csv_name, start, finish):
7393def log_issue_to_csv (info , csv_name ):
7494 fieldnames = ['repository name' , 'number' , 'title' , 'state' , 'task' , 'created at' , 'creator name' , 'creator login' ,
7595 'creator email' , 'closer name' , 'closer login' , 'closer email' , 'closed at' , 'comment body' ,
76- 'comment created at' , 'comment author name' , 'comment author login' , 'comment author email' ]
96+ 'comment created at' , 'comment author name' , 'comment author login' , 'comment author email' ,
97+ 'assignee story' , ]
7798 with open (csv_name , 'a' , newline = '' ) as file :
7899 writer = csv .DictWriter (file , fieldnames = fieldnames )
79100 writer .writerow (info )
@@ -104,16 +125,19 @@ def log_repository_issues(repository: Repository, csv_name, start, finish):
104125 'comment author name' : EMPTY_FIELD ,
105126 'comment author login' : EMPTY_FIELD ,
106127 'comment author email' : EMPTY_FIELD ,
128+ 'assignee story' : EMPTY_FIELD ,
107129 }
108130
131+ info_tmp ['assignee story' ] = get_assignee_story (issue )
132+
109133 if issue .user is not None :
110134 info_tmp ['creator name' ] = issue .user .name
111135 info_tmp ['creator login' ] = issue .user .login
112136
113137 if issue .closed_by is not None :
114138 info_tmp ['closed at' ] = issue .closed_at
115- info_tmp ['creator name' ] = issue .closed_by .name
116- info_tmp ['creator login' ] = issue .user .login
139+ info_tmp ['closer name' ] = issue .closed_by .name
140+ info_tmp ['closer login' ] = issue .user .login
117141
118142 if issue .get_comments ().totalCount > 0 :
119143 for comment in issue .get_comments ():
@@ -135,7 +159,7 @@ def log_pr_to_csv(info, csv_name):
135159 'creator login' , 'creator email' ,
136160 'changed files' , 'comment body' , 'comment created at' , 'comment author name' , 'comment author login' ,
137161 'comment author email' , 'merger name' , 'merger login' , 'merger email' , 'source branch' ,
138- 'target branch' ]
162+ 'target branch' , 'assignee story' , ]
139163 with open (csv_name , 'a' , newline = '' ) as file :
140164 writer = csv .DictWriter (file , fieldnames = fieldnames )
141165 writer .writerow (info )
@@ -172,13 +196,16 @@ def log_repositories_pr(repository: Repository, csv_name, start, finish):
172196 'merger email' : EMPTY_FIELD ,
173197 'source branch' : pull .head .ref ,
174198 'target branch' : pull .base .ref ,
199+ 'assignee story' : EMPTY_FIELD ,
175200 }
176201
177202 if pull .merged_by is not None :
178203 info_tmp ['merger name' ] = pull .merged_by .name
179204 info_tmp ['merger login' ] = pull .merged_by .login
180205 info_tmp ['merger email' ] = pull .merged_by .email
181206
207+ info_tmp ['assignee story' ] = get_assignee_story (pull )
208+
182209 if pull .get_comments ().totalCount > 0 :
183210 for comment in pull .get_comments ():
184211 info = info_tmp
@@ -220,6 +247,7 @@ def log_pull_requests(client: Github, repositories, csv_name, start, finish):
220247 'merger email' ,
221248 'source branch' ,
222249 'target branch' ,
250+ 'assignee story' ,
223251 )
224252 )
225253
@@ -239,15 +267,18 @@ def log_issues(client: Github, repositories, csv_name, start, finish):
239267 'task' ,
240268 'created at' ,
241269 'creator name' ,
270+ 'creator login' ,
242271 'creator email' ,
243272 'closer name' ,
273+ 'closer login' ,
244274 'closer email' ,
245275 'closed at' ,
246276 'comment body' ,
247277 'comment created at' ,
248278 'comment author name' ,
249279 'comment author login' ,
250280 'comment author email' ,
281+ 'assignee story' ,
251282 )
252283 )
253284
0 commit comments