add a class for Mantishub

This commit is contained in:
Andreas Zweili 2021-11-06 21:27:27 +01:00
parent da9fc60e60
commit d6daa604e6
6 changed files with 53 additions and 10 deletions

View File

@ -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")

View File

@ -5,3 +5,6 @@ gitlab:
todoist:
token: "todoisttoken"
mantishub:
token: "mantistoken"

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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