forked from Lesin/reposync
133 lines
4.9 KiB
Python
133 lines
4.9 KiB
Python
import urllib
|
||
import requests
|
||
import mysql.connector
|
||
from datetime import datetime, timedelta
|
||
|
||
|
||
def send_gitee_issue(owner, repo, token, conn, cursor):
|
||
cursor.execute('SELECT subject, description, status_id ,priority_id, start_date, due_date , branch_name FROM gitlink_issue')
|
||
|
||
gitlink_result = cursor.fetchall()
|
||
|
||
cursor.execute('DROP TABLE IF EXISTS gitee_issue')
|
||
# 创建一个表
|
||
cursor.execute('''CREATE TABLE IF NOT EXISTS gitee_issue
|
||
(id INT AUTO_INCREMENT PRIMARY KEY, issue_id VARCHAR(10), issue_title VARCHAR(100), issue_body VARCHAR(1000), issue_state VARCHAR(15), issue_created_at VARCHAR(100), issue_priority INT,issue_start_date VARCHAR(100), issue_deadline VARCHAR(100), issue_branch VARCHAR(100))''')
|
||
|
||
for row in gitlink_result:
|
||
# Gitee创建issue的API URL
|
||
url = f"https://gitee.com/api/v5/repos/{owner}/issues"
|
||
# 构造请求头
|
||
|
||
headers = {'Authorization': f'token {token}'}
|
||
|
||
data = {
|
||
"access_token": token,
|
||
"owner": owner,
|
||
"repo": repo,
|
||
"title": row[0],
|
||
"body": row[1],
|
||
}
|
||
|
||
response = requests.post(url, headers=headers, json=data)
|
||
issue_info = response.json()
|
||
if row[2] == 1:
|
||
state = 'open'
|
||
elif row[2] == 2:
|
||
state = 'progressing'
|
||
else:
|
||
state = 'closed'
|
||
|
||
if row [3] == 1:
|
||
priority = 1
|
||
elif row [3] == 2:
|
||
priority = 2
|
||
elif row [3] == 3:
|
||
priority = 3
|
||
else:
|
||
priority = 4
|
||
|
||
start_date = row[4]
|
||
due_date = row[5]
|
||
branch = row[6]
|
||
|
||
cursor.execute(
|
||
"INSERT INTO gitee_issue (issue_id, issue_title, issue_body, issue_state, issue_priority, issue_start_date, issue_deadline, issue_branch) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
|
||
(issue_info['number'], row[0], row[1], state, priority, start_date, due_date, branch))
|
||
conn.commit()
|
||
|
||
# # 打印响应
|
||
# print(response.text)
|
||
# 检查响应状态码
|
||
if response.status_code == 201:
|
||
issue_info = response.json()
|
||
# print(f'Issue created with ID: {issue_info["number"]}')
|
||
else:
|
||
print(f"创建issue失败,状态码:{response.status_code},错误信息:{response.text}")
|
||
|
||
###########################更改已经创建好的issue###############################
|
||
cursor.execute('SELECT issue_id, issue_state, issue_priority, issue_start_date, issue_deadline, issue_branch FROM gitee_issue')
|
||
# Gitee更新issue的API URL
|
||
gitee_update_result = cursor.fetchall()
|
||
for row in gitee_update_result:
|
||
issue_number = row[0]
|
||
state = row[1]
|
||
url = f'https://gitee.com/api/v5/repos/{owner}/issues/{issue_number}'
|
||
# 构造请求头
|
||
headers = {'Authorization': f'token {token}'}
|
||
plan_started_at = row[3]
|
||
try:
|
||
date_obj = datetime.strptime(plan_started_at, "%Y-%m-%d")
|
||
formatted_date_str = date_obj.strftime("%Y-%m-%dT%H:%M:%S") + "+08:00"
|
||
plan_started_at = date_obj.strftime("%Y-%m-%dT%H:%M:%S") + "+08:00"
|
||
except:
|
||
plan_started_at = row[3]
|
||
deadline = row[4]
|
||
|
||
# original_date = datetime.strptime(deadline, "%Y-%m-%d")
|
||
# target_date = original_date + timedelta(days=2)
|
||
# target_time = target_date.replace(hour=23, minute=59, second=59)
|
||
# deadline = target_time.strftime("%Y-%m-%dT%H:%M:%S") + "+08:00"
|
||
# 发送POST请求
|
||
data = {
|
||
"access_token": token,
|
||
"owner": owner,
|
||
"repo": repo,
|
||
"number": issue_number,
|
||
"state": state,
|
||
"priority": row[2],
|
||
"plan_started_at": plan_started_at,
|
||
"deadline": deadline,
|
||
"branch": row[5]
|
||
}
|
||
# print(plan_started_at,deadline)
|
||
# 将字典转换为查询字符串
|
||
query_string = urllib.parse.urlencode(data)
|
||
|
||
# 完整的请求 URL,包括查询字符串
|
||
full_url1 = f"{url}?{query_string}"
|
||
response = requests.patch(full_url1, headers=headers, json=data)
|
||
# 打印响应
|
||
# print(response.text)
|
||
# 检查响应状态码
|
||
if response.status_code == 200:
|
||
issue_info = response.json()
|
||
# print(f'Issue created with ID: {issue_info["number"]}')
|
||
else:
|
||
print(f"创建issue失败,状态码:{response.status_code},错误信息:{response.text}")
|
||
|
||
print("成功同步gitlink-issues到gitee_issues")
|
||
|
||
# # 连接到MySQL数据库
|
||
# conn = mysql.connector.connect(
|
||
# host="localhost",
|
||
# user="root",
|
||
# password="251226X",
|
||
# database="reposyncer"
|
||
# )
|
||
# cursor = conn.cursor()
|
||
#
|
||
# token = '62b7d0577a13b75ff066047426df30cb'
|
||
# owner = 'wyf0625'
|
||
# repo = 'ob-reposyncer-gitee'
|
||
# send_gitee_issue(owner, repo, token, conn, cursor) |