|
1 | | -from github import Github, Repository, GithubException |
2 | 1 | import csv |
3 | 2 |
|
| 3 | +from github import Github, Repository, GithubException |
| 4 | + |
4 | 5 | EMPTY_FIELD = 'Empty field' |
5 | 6 |
|
| 7 | + |
6 | 8 | def login(token): |
7 | 9 | client = Github(login_or_token=token) |
8 | 10 | try: |
@@ -31,7 +33,8 @@ def get_next_repo(client: Github, repositories): |
31 | 33 |
|
32 | 34 |
|
33 | 35 | 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'] |
| 36 | + fieldnames = ['repository name', 'commit id', 'author name', 'author login', 'author email', 'date and time', |
| 37 | + 'changed files'] |
35 | 38 | with open(csv_name, 'a', newline='') as file: |
36 | 39 | writer = csv.DictWriter(file, fieldnames=fieldnames) |
37 | 40 | writer.writerow(info) |
@@ -65,7 +68,8 @@ def log_repository_commits(repository: Repository, csv_name): |
65 | 68 | def log_issue_to_csv(info, csv_name): |
66 | 69 | fieldnames = ['repository name', 'number', 'title', 'state', 'task', 'created at', 'creator name', 'creator login', |
67 | 70 | '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'] |
| 71 | + 'comment created at', 'comment author name', 'comment author login', 'comment author email', |
| 72 | + 'assignee story',] |
69 | 73 | with open(csv_name, 'a', newline='') as file: |
70 | 74 | writer = csv.DictWriter(file, fieldnames=fieldnames) |
71 | 75 | writer.writerow(info) |
@@ -93,8 +97,24 @@ def log_repository_issues(repository: Repository, csv_name): |
93 | 97 | 'comment author name': EMPTY_FIELD, |
94 | 98 | 'comment author login': EMPTY_FIELD, |
95 | 99 | 'comment author email': EMPTY_FIELD, |
| 100 | + 'assignee story': EMPTY_FIELD, |
96 | 101 | } |
97 | 102 |
|
| 103 | + assignee_result = "" |
| 104 | + events = issue.get_events() |
| 105 | + for event in events: |
| 106 | + if event.event == "assigned" or event.event == "unassigned": |
| 107 | + date = event.created_at |
| 108 | + if event.event == "assigned": |
| 109 | + assigner = "placeholder" # event.actor не работает (баг pygithub) |
| 110 | + assignee = event.assignee.login |
| 111 | + assignee_result += f"{date}: {assigner} -> {assignee}; " |
| 112 | + else: |
| 113 | + assigner = "placeholder" # event.actor не работает (баг pygithub) |
| 114 | + assignee = event.assignee.login |
| 115 | + assignee_result += f"{date}: {assigner} -/> {assignee}; " |
| 116 | + info_tmp['assignee story'] = assignee_result |
| 117 | + |
98 | 118 | if issue.user is not None: |
99 | 119 | info_tmp['creator name'] = issue.user.name |
100 | 120 | info_tmp['creator login'] = issue.user.login |
@@ -123,7 +143,8 @@ def log_pr_to_csv(info, csv_name): |
123 | 143 | fieldnames = ['repository name', 'title', 'state', 'commit into', 'commit from', 'created at', 'creator name', |
124 | 144 | 'creator login', 'creator email', |
125 | 145 | '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'] |
| 146 | + 'comment author email', 'merger name', 'merger login', 'merger email', 'source branch', |
| 147 | + 'target branch', 'assignee story', ] |
127 | 148 | with open(csv_name, 'a', newline='') as file: |
128 | 149 | writer = csv.DictWriter(file, fieldnames=fieldnames) |
129 | 150 | writer.writerow(info) |
@@ -156,13 +177,29 @@ def log_repositories_pr(repository: Repository, csv_name): |
156 | 177 | 'merger email': EMPTY_FIELD, |
157 | 178 | 'source branch': pull.head.ref, |
158 | 179 | 'target branch': pull.base.ref, |
| 180 | + 'assignee story': EMPTY_FIELD, |
159 | 181 | } |
160 | 182 |
|
161 | 183 | if pull.merged_by is not None: |
162 | 184 | info_tmp['merger name'] = pull.merged_by.name |
163 | 185 | info_tmp['merger login'] = pull.merged_by.login |
164 | 186 | info_tmp['merger email'] = pull.merged_by.email |
165 | 187 |
|
| 188 | + assignee_result = "" |
| 189 | + events = pull.get_issue_events() |
| 190 | + for event in events: |
| 191 | + if event.event == "assigned" or event.event == "unassigned": |
| 192 | + date = event.created_at |
| 193 | + if event.event == "assigned": |
| 194 | + assigner = "placeholder" # event.actor не работает (баг pygithub) |
| 195 | + assignee = event.assignee.login |
| 196 | + assignee_result += f"{date}: {assigner} -> {assignee}; " |
| 197 | + else: |
| 198 | + assigner = "placeholder" # event.actor не работает (баг pygithub) |
| 199 | + assignee = event.assignee.login |
| 200 | + assignee_result += f"{date}: {assigner} -/> {assignee}; " |
| 201 | + info_tmp['assignee story'] = assignee_result |
| 202 | + |
166 | 203 | if pull.get_comments().totalCount > 0: |
167 | 204 | for comment in pull.get_comments(): |
168 | 205 | info = info_tmp |
@@ -203,6 +240,7 @@ def log_pull_requests(client: Github, repositories, csv_name): |
203 | 240 | 'merger email', |
204 | 241 | 'source branch', |
205 | 242 | 'target branch', |
| 243 | + 'assignee story', |
206 | 244 | ) |
207 | 245 | ) |
208 | 246 |
|
@@ -231,6 +269,7 @@ def log_issues(client: Github, repositories, csv_name): |
231 | 269 | 'comment author name', |
232 | 270 | 'comment author login', |
233 | 271 | 'comment author email', |
| 272 | + 'assignee story', |
234 | 273 | ) |
235 | 274 | ) |
236 | 275 |
|
|
0 commit comments