From 24a99ee2d407571c5d96efc45a84de901359107b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Wed, 15 May 2024 15:54:16 -0400 Subject: [PATCH] Take one at an import issues script --- import_issues.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 import_issues.py diff --git a/import_issues.py b/import_issues.py new file mode 100644 index 0000000..f1a86b8 --- /dev/null +++ b/import_issues.py @@ -0,0 +1,57 @@ +import csv +import os +import sys +from dotenv import load_dotenv +import requests + +load_dotenv() + +FORGEJO_INSTANCE = os.getenv("FORGEJO_INSTANCE", "https://codeberg.org") +FORGEJO_API_TOKEN = os.getenv("FORGEJO_API_TOKEN") + +API_GET_ISSUE = "{instance}/api/v1/repos/{owner}/{repo}/issues/{index}" +API_GET_ISSUE = "{instance}/api/v1/repos/{owner}/{repo}/issues/{index}" +API_PATCH_ISSUE = "{instance}/api/v1/repos/{owner}/{repo}/issues/{index}" +API_CREATE_ISSUE = "{instance}/api/v1/repos/{owner}/{repo}/issues" +API_GET_COMMENTS = "{instance}/api/v1/repos/{owner}/{repo}/issues/{index}/comments" +API_CREATE_COMMENT = "{instance}/api/v1/repos/{owner}/{repo}/issues/{index}/comments" + +def import_issues(owner, repo, csv_filename): + + issues = [] + with open(csv_filename) as csvfile: + rows = csv.reader(csvfile) + rows.pop(0) + for row in rows: + issues.append(row[0]) + + + print(f"Creating issue {json_response['title']} now…") + + for issue in issues: + new_issue = { + "title": issue + } + + create_issue_url = API_CREATE_ISSUE.format(instance=FORGEJO_INSTANCE, owner=owner, repo=repo) + # print(create_issue_url) + headers = {"Authorization": f"token {FORGEJO_API_TOKEN}"} + created_response = requests.post(create_issue_url, headers=headers, json=new_issue) + + json_response = created_response.json() + message = json_response.pop('message', False) + if message: + print(message) + sys.exit("Error creating issue.") + else: + new_issue_url = json_response['html_url'] + print(f"Issue created: {new_issue_url}") + + +if __name__=="__main__": + # '0' comes in as move_issue.py when this is called as `python move_issue.py` + owner = sys.argv[1] + repo = sys.argv[2] + csv_filename = sys.argv[2] + + import_issues(owner, repo, csvfile)