Skip to content

Commit d97eba0

Browse files
committed
conficts resolved, problem with pulls resolved
2 parents fd733c1 + 4e1e5f3 commit d97eba0

File tree

1 file changed

+62
-20
lines changed

1 file changed

+62
-20
lines changed

git_logger.py

Lines changed: 62 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
from github import Github, Repository, GithubException
21
import csv
32
import requests
43
import json
54

5+
from github import Github, Repository, GithubException, PullRequest
6+
67
EMPTY_FIELD = 'Empty field'
78

89

@@ -34,8 +35,27 @@ def get_next_repo(client: Github, repositories):
3435
yield repo
3536

3637

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+
3756
def log_commit_to_csv(info, csv_name):
38-
fieldnames = ['repository name', 'author name', 'author login', 'author email', 'date and time', 'changed files', 'commit id']
57+
fieldnames = ['repository name', 'commit id', 'author name', 'author login', 'author email', 'date and time',
58+
'changed files']
3959
with open(csv_name, 'a', newline='') as file:
4060
writer = csv.DictWriter(file, fieldnames=fieldnames)
4161
writer.writerow(info)
@@ -69,7 +89,9 @@ def log_repository_commits(repository: Repository, csv_name):
6989
def log_issue_to_csv(info, csv_name):
7090
fieldnames = ['repository name', 'number', 'title', 'state', 'task', 'created at', 'creator name', 'creator login',
7191
'creator email', 'closer name', 'closer login', 'closer email', 'closed at', 'comment body',
72-
'comment created at', 'comment author name', 'comment author login', 'comment author email','connected pull requests']
92+
'comment created at', 'comment author name', 'comment author login', 'comment author email',
93+
'assignee story', 'connected pull requests']
94+
7395
with open(csv_name, 'a', newline='') as file:
7496
writer = csv.DictWriter(file, fieldnames=fieldnames)
7597
writer.writerow(info)
@@ -78,7 +100,8 @@ def log_issue_to_csv(info, csv_name):
78100
def log_issue_to_stdout(info):
79101
print(info)
80102

81-
def get_connected_pulls(issue_number,repo_owner,repo_name,token):
103+
104+
def get_connected_pulls(issue_number, repo_owner, repo_name, token):
82105
access_token = token
83106
repo_owner = repo_owner.login
84107
# Формирование запроса GraphQL
@@ -124,16 +147,20 @@ def get_connected_pulls(issue_number,repo_owner,repo_name,token):
124147
response_data = response.json()
125148
# Обработка полученных данных
126149
pull_request_data = response_data["data"]["repository"]["issue"]
127-
if(pull_request_data is not None):
150+
list_url = []
151+
if (pull_request_data is not None):
128152
issues_data = pull_request_data["timelineItems"]["nodes"]
129-
list_url = []
130153
for pulls in issues_data:
131-
if (pulls.get("CrossReferencedEvent") != None):
154+
if (pulls.get("CrossReferencedEvent") != None and pulls.get("CrossReferencedEvent").get("url") not in list_url) :
132155
list_url.append(pulls.get("CrossReferencedEvent").get("url"))
133-
if (pulls.get("ConnectedEvent") != None):
156+
if (pulls.get("ConnectedEvent") != None and pulls.get("ConnectedEvent").get("url") not in list_url):
134157
list_url.append(pulls.get("ConnectedEvent").get("url"))
135-
return list_url
136-
return None
158+
if (list_url == []):
159+
return 'Empty field'
160+
else:
161+
return list_url
162+
return 'Empty field'
163+
137164

138165

139166
def log_repository_issues(repository: Repository, csv_name, token):
@@ -154,19 +181,23 @@ def log_repository_issues(repository: Repository, csv_name, token):
154181
'comment author name': EMPTY_FIELD,
155182
'comment author login': EMPTY_FIELD,
156183
'comment author email': EMPTY_FIELD,
157-
'connected pull requests' : EMPTY_FIELD
184+
'assignee story': EMPTY_FIELD,
185+
'connected pull requests': EMPTY_FIELD
158186
}
159187
if issue.number is not None:
160-
info_tmp['connected pull requests'] = get_connected_pulls(issue.number, repository.owner, repository.name, token)
188+
info_tmp['connected pull requests'] = get_connected_pulls(issue.number, repository.owner, repository.name,
189+
token)
190+
191+
info_tmp['assignee story'] = get_assignee_story(issue)
161192

162193
if issue.user is not None:
163194
info_tmp['creator name'] = issue.user.name
164195
info_tmp['creator login'] = issue.user.login
165196

166197
if issue.closed_by is not None:
167198
info_tmp['closed at'] = issue.closed_at
168-
info_tmp['creator name'] = issue.closed_by.name
169-
info_tmp['creator login'] = issue.user.login
199+
info_tmp['closer name'] = issue.closed_by.name
200+
info_tmp['closer login'] = issue.user.login
170201

171202
if issue.get_comments().totalCount > 0:
172203
for comment in issue.get_comments():
@@ -187,7 +218,8 @@ def log_pr_to_csv(info, csv_name):
187218
fieldnames = ['repository name', 'title', 'state', 'commit into', 'commit from', 'created at', 'creator name',
188219
'creator login', 'creator email',
189220
'changed files', 'comment body', 'comment created at', 'comment author name', 'comment author login',
190-
'comment author email', 'merger name', 'merger login', 'merger email','source branch', 'target branch','related issues']
221+
'comment author email', 'merger name', 'merger login', 'merger email', 'source branch',
222+
'target branch', 'assignee story', 'related issues']
191223
with open(csv_name, 'a', newline='') as file:
192224
writer = csv.DictWriter(file, fieldnames=fieldnames)
193225
writer.writerow(info)
@@ -196,7 +228,8 @@ def log_pr_to_csv(info, csv_name):
196228
def log_pr_to_stdout(info):
197229
print(info)
198230

199-
def get_related_issues(pull_request_number,repo_owner,repo_name,token):
231+
232+
def get_related_issues(pull_request_number, repo_owner, repo_name, token):
200233
access_token = token
201234
repo_owner = repo_owner.login
202235

@@ -242,7 +275,7 @@ def get_related_issues(pull_request_number,repo_owner,repo_name,token):
242275
return list_issues_url
243276

244277

245-
def log_repositories_pr(repository: Repository, csv_name,token):
278+
def log_repositories_pr(repository: Repository, csv_name, token):
246279
for pull in repository.get_pulls(state='all'):
247280
info_tmp = {
248281
'repository name': repository.full_name,
@@ -263,8 +296,9 @@ def log_repositories_pr(repository: Repository, csv_name,token):
263296
'merger name': EMPTY_FIELD,
264297
'merger login': EMPTY_FIELD,
265298
'merger email': EMPTY_FIELD,
266-
'source branch': pull.head.ref,
299+
'source branch': pull.head.ref,
267300
'target branch': pull.base.ref,
301+
'assignee story': EMPTY_FIELD,
268302
'related issues': EMPTY_FIELD
269303
}
270304
if pull.issue_url is not None:
@@ -275,6 +309,8 @@ def log_repositories_pr(repository: Repository, csv_name,token):
275309
info_tmp['merger login'] = pull.merged_by.login
276310
info_tmp['merger email'] = pull.merged_by.email
277311

312+
info_tmp['assignee story'] = get_assignee_story(pull)
313+
278314
if pull.get_comments().totalCount > 0:
279315
for comment in pull.get_comments():
280316
info = info_tmp
@@ -290,7 +326,7 @@ def log_repositories_pr(repository: Repository, csv_name,token):
290326
log_pr_to_stdout(info_tmp)
291327

292328

293-
def log_pull_requests(client: Github, repositories, csv_name,token):
329+
def log_pull_requests(client: Github, repositories, csv_name, token):
294330
with open(csv_name, 'w', newline='') as file:
295331
writer = csv.writer(file)
296332
writer.writerow(
@@ -313,9 +349,11 @@ def log_pull_requests(client: Github, repositories, csv_name,token):
313349
'merger name',
314350
'merger login',
315351
'merger email',
316-
'source branch',
352+
'source branch',
317353
'target branch',
318354
'related issues'
355+
'assignee story',
356+
'related issues'
319357
)
320358
)
321359

@@ -335,8 +373,10 @@ def log_issues(client: Github, repositories, csv_name, token):
335373
'task',
336374
'created at',
337375
'creator name',
376+
'creator login',
338377
'creator email',
339378
'closer name',
379+
'closer login',
340380
'closer email',
341381
'closed at',
342382
'comment body',
@@ -345,6 +385,8 @@ def log_issues(client: Github, repositories, csv_name, token):
345385
'comment author login',
346386
'comment author email',
347387
'connected pull requests'
388+
'assignee story',
389+
'connected pull requests'
348390
)
349391
)
350392

0 commit comments

Comments
 (0)