From d6daa604e6f20134f48691d175cba5f9f1e3c460 Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Sat, 6 Nov 2021 21:27:27 +0100 Subject: [PATCH] add a class for Mantishub --- tests/test_settings.py | 3 ++- todoist_interface.yml.example | 3 +++ todoist_interface/__main__.py | 15 +++++++++++---- todoist_interface/gitlab.py | 15 ++++++++++++++- todoist_interface/mantishub.py | 21 +++++++++++++++++++++ todoist_interface/utils.py | 6 ++---- 6 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 todoist_interface/mantishub.py diff --git a/tests/test_settings.py b/tests/test_settings.py index f8e4118..3a60758 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -6,4 +6,5 @@ def test_settings(): assert (config["gitlab"]["token"] == "gitlabtoken" and config["gitlab"]["url"] == "https://gitlab.example.com/api/v4/" and config["todoist"]["token"] == "todoisttoken" - and config["gitlab"]["assignee"] == "muster") + and config["gitlab"]["assignee"] == "muster" + and config["mantishub"]["token"] == "mantistoken") diff --git a/todoist_interface.yml.example b/todoist_interface.yml.example index 46ce1cb..2123d61 100644 --- a/todoist_interface.yml.example +++ b/todoist_interface.yml.example @@ -5,3 +5,6 @@ gitlab: todoist: token: "todoisttoken" + +mantishub: + token: "mantistoken" diff --git a/todoist_interface/__main__.py b/todoist_interface/__main__.py index 12353f0..80640bd 100644 --- a/todoist_interface/__main__.py +++ b/todoist_interface/__main__.py @@ -1,6 +1,8 @@ import settings from todoist import TodoistAPI from gitlab import GitlabAPI +from mantishub import MantishubAPI +from todoist_interface import mantishub import utils if __name__ == '__main__': @@ -10,16 +12,21 @@ if __name__ == '__main__': # initialise Todoist and Gitlab todoist = TodoistAPI(config['todoist']['token']) - gitlab = GitlabAPI(config["gitlab"]["url"], config["gitlab"]["token"]) + gitlab = GitlabAPI(config["gitlab"]["url"], + config["gitlab"]["token"], + config["gitlab"]["assignee"]) + mantishub = MantishubAPI(config["mantishub"]["token"]) # Get the Todoist tasks tasks = todoist.get_get_tasks_by_filter("@gitlab") # Get the Gitlab issues - issues = gitlab.get_issues_by_assignee("zweili") + gitlab_tasks = gitlab.get_issues() + mantishub_tasks = mantishub.get_tickets() + missing_tasks = [] + missing_tasks.append(utils.get_missing_tasks(tasks, gitlab_tasks)) + missing_tasks.append(utils.get_missing_tasks(tasks, mantishub_tasks)) - # Create a list of issues that are not in Todoist - missing_tasks = utils.get_missing_tasks(tasks, issues) if missing_tasks: todoist.create_tasks(missing_tasks) exit(0) diff --git a/todoist_interface/gitlab.py b/todoist_interface/gitlab.py index 6c73ddb..aacc4e5 100644 --- a/todoist_interface/gitlab.py +++ b/todoist_interface/gitlab.py @@ -2,9 +2,10 @@ import requests class GitlabAPI: - def __init__(self, url: str, token: str) -> None: + def __init__(self, url: str, token: str, assignee: str) -> None: self.url = url self.token = token + self.assignee = assignee def get_issues_by_assignee(self, assignee: str) -> list: """ @@ -22,3 +23,15 @@ class GitlabAPI: issues = response.json() return issues + + def convert_to_todoist(issues): + tasks = [] + for issue in issues: + content = "[{title}]({url})".format(title=issue["title"], + url=issue["web_url"]) + tasks.append({"content": content}) + return tasks + + def get_issues(self) -> list: + issues = self.get_issues_by_assignee(self.assignee) + return self.convert_to_todoist(issues) diff --git a/todoist_interface/mantishub.py b/todoist_interface/mantishub.py new file mode 100644 index 0000000..2f2c6f4 --- /dev/null +++ b/todoist_interface/mantishub.py @@ -0,0 +1,21 @@ +import requests + + +class MantishubAPI: + url = "https://contria.mantishub.io/api/rest/" + + def __init__(self, token: str): + self.token = token + + def get_tickets(self): + response = requests.get( + self.url + "issues?filter_id=assigned", + headers={"Authorization": self.token}) + tickets = response.json() + return self.convert_to_todoist(tickets) + + def convert_to_todoist(self, tickets): + for ticket in tickets: + print(ticket) + tasks = [] + return tasks diff --git a/todoist_interface/utils.py b/todoist_interface/utils.py index ee864c3..57a316d 100644 --- a/todoist_interface/utils.py +++ b/todoist_interface/utils.py @@ -7,9 +7,7 @@ def get_missing_tasks(tasks, issues_to_check): """ missing_tasks = [] for issue in issues_to_check: - content = "[{title}]({url})".format(title=issue["title"], - url=issue["web_url"]) - if content not in [t["content"] for t in tasks]: - missing_tasks.append({"content": content}) + if issue["content"] not in [t["content"] for t in tasks]: + missing_tasks.append(issue) return missing_tasks