|
1 | 1 | import csv |
2 | 2 |
|
3 | | -from github import Github, Repository, GithubException |
| 3 | +from github import Github, Repository, GithubException, PullRequest |
4 | 4 |
|
5 | 5 | EMPTY_FIELD = 'Empty field' |
6 | 6 |
|
@@ -32,6 +32,24 @@ def get_next_repo(client: Github, repositories): |
32 | 32 | yield repo |
33 | 33 |
|
34 | 34 |
|
| 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 | + |
35 | 53 | def log_commit_to_csv(info, csv_name): |
36 | 54 | fieldnames = ['repository name', 'commit id', 'author name', 'author login', 'author email', 'date and time', |
37 | 55 | 'changed files'] |
@@ -69,7 +87,7 @@ def log_issue_to_csv(info, csv_name): |
69 | 87 | fieldnames = ['repository name', 'number', 'title', 'state', 'task', 'created at', 'creator name', 'creator login', |
70 | 88 | 'creator email', 'closer name', 'closer login', 'closer email', 'closed at', 'comment body', |
71 | 89 | 'comment created at', 'comment author name', 'comment author login', 'comment author email', |
72 | | - 'assignee story',] |
| 90 | + 'assignee story', ] |
73 | 91 | with open(csv_name, 'a', newline='') as file: |
74 | 92 | writer = csv.DictWriter(file, fieldnames=fieldnames) |
75 | 93 | writer.writerow(info) |
@@ -100,20 +118,7 @@ def log_repository_issues(repository: Repository, csv_name): |
100 | 118 | 'assignee story': EMPTY_FIELD, |
101 | 119 | } |
102 | 120 |
|
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 |
| 121 | + info_tmp['assignee story'] = get_assignee_story(issue) |
117 | 122 |
|
118 | 123 | if issue.user is not None: |
119 | 124 | info_tmp['creator name'] = issue.user.name |
@@ -185,20 +190,7 @@ def log_repositories_pr(repository: Repository, csv_name): |
185 | 190 | info_tmp['merger login'] = pull.merged_by.login |
186 | 191 | info_tmp['merger email'] = pull.merged_by.email |
187 | 192 |
|
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 |
| 193 | + info_tmp['assignee story'] = get_assignee_story(pull) |
202 | 194 |
|
203 | 195 | if pull.get_comments().totalCount > 0: |
204 | 196 | for comment in pull.get_comments(): |
|
0 commit comments