migrate_issue/main.py

75 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from gitlink_api import HandleIssue
from config import source_host, source_project, target_project, target_host
import math
from loguru import logger
def get_issue_ids():
"""
获取源仓库所有的issue_ids
:return:
"""
issue_ids = []
page = 1
limit = 15
issue_api = HandleIssue(source_host)
# 获取仓库所有issue数量
issue_count = issue_api.get_issue_list(project=source_project, limit=limit, page=page).get("total_issues_count", 0)
logger.debug(f"总共有{issue_count}个issue")
# 判断当前共有多少页
total_page = math.ceil(int(issue_count) / limit)
# 循环请求获取所有的issue_id
while page <= total_page:
issues = issue_api.get_issue_list(project=source_project, page=page, limit=limit).get("issues", "")
if issues and len(issues) > 0:
for issue in issues:
issue_ids.append(issue.get("project_issues_index"))
page += 1
print(f"获取到所有issue_ids: {issue_ids}")
return issue_ids
def get_issues_and_journals():
"""
根据issueID所有的issue详细信息及评论
:return:
"""
issue_api = HandleIssue(source_host)
issue_ids = get_issue_ids()
issues_and_journals = []
for issue_id in issue_ids:
# 获取源仓库的某一个issue详情及评论
issue_detail = issue_api.get_issue_detail(project=source_project, issue_id=issue_id)
# 获取源仓库的某一个issue评论数量
issue_journals = []
page = 1
limit = 50
comment_journals_count = issue_api.get_issue_journals_detail(project=source_project, issue_id=issue_id,
page=page,
limit=limit).get("total_comment_journals_count", 0)
# 当issue评论数量大于0时去获取评论
if comment_journals_count > 0:
# 判断当前共有多少页
total_page = math.ceil(int(comment_journals_count) / limit)
# 循环请求获取所有的issue评论
while page <= total_page:
journals = issue_api.get_issue_journals_detail(project=source_project, issue_id=issue_id, page=page,
limit=limit).get("journals", "")
if journals and len(journals) > 0:
for journal in journals:
issue_journals.append(journal)
page += 1
issues_and_journals.append(
{
"issue_id": issue_id,
"issue_detail": issue_detail,
"issue_journals": issue_journals
}
)
return issues_and_journals
if __name__ == '__main__':
print(get_issues_and_journals())