Skip to content

Commit 4e1e5f3

Browse files
authored
Merge pull request #22 from OSLL/8_assignee_problem
issue 8 assignee problem
2 parents 3337c88 + d8d018b commit 4e1e5f3

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

git_logger.py

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
from github import Github, Repository, GithubException
21
import csv
32

3+
from github import Github, Repository, GithubException, PullRequest
4+
45
EMPTY_FIELD = 'Empty field'
56

7+
68
def login(token):
79
client = Github(login_or_token=token)
810
try:
@@ -30,8 +32,27 @@ def get_next_repo(client: Github, repositories):
3032
yield repo
3133

3234

35+
def get_assignee_story(github_object):
36+
assignee_result = ""
37+
events = github_object.get_issue_events() if type(
38+
github_object) is PullRequest.PullRequest else github_object.get_events()
39+
for event in events:
40+
if event.event == "assigned" or event.event == "unassigned":
41+
date = event.created_at
42+
if event.event == "assigned":
43+
assigner = github_object.user.login
44+
assignee = event.assignee.login
45+
assignee_result += f"{date}: {assigner} -> {assignee}; "
46+
else:
47+
assigner = github_object.user.login
48+
assignee = event.assignee.login
49+
assignee_result += f"{date}: {assigner} -/> {assignee}; "
50+
return assignee_result
51+
52+
3353
def log_commit_to_csv(info, csv_name):
34-
fieldnames = ['repository name', 'commit id', 'author name', 'author login', 'author email', 'date and time', 'changed files']
54+
fieldnames = ['repository name', 'commit id', 'author name', 'author login', 'author email', 'date and time',
55+
'changed files']
3556
with open(csv_name, 'a', newline='') as file:
3657
writer = csv.DictWriter(file, fieldnames=fieldnames)
3758
writer.writerow(info)
@@ -65,7 +86,8 @@ def log_repository_commits(repository: Repository, csv_name):
6586
def log_issue_to_csv(info, csv_name):
6687
fieldnames = ['repository name', 'number', 'title', 'state', 'task', 'created at', 'creator name', 'creator login',
6788
'creator email', 'closer name', 'closer login', 'closer email', 'closed at', 'comment body',
68-
'comment created at', 'comment author name', 'comment author login', 'comment author email']
89+
'comment created at', 'comment author name', 'comment author login', 'comment author email',
90+
'assignee story', ]
6991
with open(csv_name, 'a', newline='') as file:
7092
writer = csv.DictWriter(file, fieldnames=fieldnames)
7193
writer.writerow(info)
@@ -93,8 +115,11 @@ def log_repository_issues(repository: Repository, csv_name):
93115
'comment author name': EMPTY_FIELD,
94116
'comment author login': EMPTY_FIELD,
95117
'comment author email': EMPTY_FIELD,
118+
'assignee story': EMPTY_FIELD,
96119
}
97120

121+
info_tmp['assignee story'] = get_assignee_story(issue)
122+
98123
if issue.user is not None:
99124
info_tmp['creator name'] = issue.user.name
100125
info_tmp['creator login'] = issue.user.login
@@ -123,7 +148,8 @@ def log_pr_to_csv(info, csv_name):
123148
fieldnames = ['repository name', 'title', 'state', 'commit into', 'commit from', 'created at', 'creator name',
124149
'creator login', 'creator email',
125150
'changed files', 'comment body', 'comment created at', 'comment author name', 'comment author login',
126-
'comment author email', 'merger name', 'merger login', 'merger email', 'source branch', 'target branch']
151+
'comment author email', 'merger name', 'merger login', 'merger email', 'source branch',
152+
'target branch', 'assignee story', ]
127153
with open(csv_name, 'a', newline='') as file:
128154
writer = csv.DictWriter(file, fieldnames=fieldnames)
129155
writer.writerow(info)
@@ -156,13 +182,16 @@ def log_repositories_pr(repository: Repository, csv_name):
156182
'merger email': EMPTY_FIELD,
157183
'source branch': pull.head.ref,
158184
'target branch': pull.base.ref,
185+
'assignee story': EMPTY_FIELD,
159186
}
160187

161188
if pull.merged_by is not None:
162189
info_tmp['merger name'] = pull.merged_by.name
163190
info_tmp['merger login'] = pull.merged_by.login
164191
info_tmp['merger email'] = pull.merged_by.email
165192

193+
info_tmp['assignee story'] = get_assignee_story(pull)
194+
166195
if pull.get_comments().totalCount > 0:
167196
for comment in pull.get_comments():
168197
info = info_tmp
@@ -203,6 +232,7 @@ def log_pull_requests(client: Github, repositories, csv_name):
203232
'merger email',
204233
'source branch',
205234
'target branch',
235+
'assignee story',
206236
)
207237
)
208238

@@ -233,6 +263,7 @@ def log_issues(client: Github, repositories, csv_name):
233263
'comment author name',
234264
'comment author login',
235265
'comment author email',
266+
'assignee story',
236267
)
237268
)
238269

0 commit comments

Comments
 (0)