add lots of things
This commit is contained in:
parent
dce2ed8282
commit
3e712c8132
|
@ -1,13 +1,24 @@
|
||||||
import settings
|
import settings
|
||||||
from todoist import TodoistAPI
|
from todoist import TodoistAPI
|
||||||
from gitlab import GitlabAPI
|
from gitlab import GitlabAPI
|
||||||
|
import utils
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
# initialise the settings
|
# initialise the settings
|
||||||
config = settings.read_config("todoist_interface.yml")
|
config = settings.read_config("todoist_interface.yml")
|
||||||
|
|
||||||
|
# initialise Todoist and Gitlab
|
||||||
todoist = TodoistAPI(config['todoist']['token'])
|
todoist = TodoistAPI(config['todoist']['token'])
|
||||||
gitlab = GitlabAPI(config["gitlab"]["url"], config["gitlab"]["token"])
|
gitlab = GitlabAPI(config["gitlab"]["url"], config["gitlab"]["token"])
|
||||||
|
|
||||||
|
# Get the Todoist tasks
|
||||||
tasks = todoist.get_get_tasks_by_filter("@gitlab")
|
tasks = todoist.get_get_tasks_by_filter("@gitlab")
|
||||||
|
|
||||||
|
# Get the Gitlab issues
|
||||||
|
issues = gitlab.get_issues_by_assignee("zweili")
|
||||||
|
|
||||||
|
# Create a list of issues that are not in Todoist
|
||||||
|
missing_tasks = utils.get_missing_tasks(tasks, issues)
|
||||||
|
todoist.create_tasks(missing_tasks)
|
||||||
print(tasks)
|
print(tasks)
|
||||||
|
|
|
@ -1,4 +1,24 @@
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
class GitlabAPI:
|
class GitlabAPI:
|
||||||
def __init__(self, url: str, token: str) -> None:
|
def __init__(self, url: str, token: str) -> None:
|
||||||
self.url = url
|
self.url = url
|
||||||
self.token = token
|
self.token = token
|
||||||
|
|
||||||
|
def get_issues_by_assignee(self, assignee: str) -> list:
|
||||||
|
"""
|
||||||
|
Get all issues assigned to a specific user
|
||||||
|
:param assignee: The username of the assignee
|
||||||
|
:return: A list of issues assigned to the user
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Get all issues assigned to the user
|
||||||
|
url = (self.url
|
||||||
|
+ '/api/v4/issues?assignee_username='
|
||||||
|
+ assignee
|
||||||
|
+ '&state=opened')
|
||||||
|
response = requests.get(url, headers={'PRIVATE-TOKEN': self.token})
|
||||||
|
issues = response.json()
|
||||||
|
|
||||||
|
return issues
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import requests
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
class TodoistAPI:
|
class TodoistAPI:
|
||||||
|
@ -16,3 +17,14 @@ class TodoistAPI:
|
||||||
headers={'Authorization': 'Bearer ' + self.token},
|
headers={'Authorization': 'Bearer ' + self.token},
|
||||||
params={"filter": filter})
|
params={"filter": filter})
|
||||||
return response.json()
|
return response.json()
|
||||||
|
|
||||||
|
def add_tasks(self, tasks: list):
|
||||||
|
"""
|
||||||
|
Adds tasks to todoist
|
||||||
|
"""
|
||||||
|
for task in tasks:
|
||||||
|
requests.post(self.url + '/tasks',
|
||||||
|
headers={'Authorization': 'Bearer ' + self.token},
|
||||||
|
data=json.dumps({
|
||||||
|
"content": task["content"],
|
||||||
|
}))
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
def get_missing_tasks(tasks, issues_to_check):
|
||||||
|
"""
|
||||||
|
Check if tasks exists in tasks_to_check
|
||||||
|
:param tasks: list of tasks
|
||||||
|
:param issues_to_check: list of issues to check
|
||||||
|
:return: A list of tasks not in Todoist
|
||||||
|
"""
|
||||||
|
missing_tasks = []
|
||||||
|
for issue in issues_to_check:
|
||||||
|
if issue["title"] not in [t["content"] for t in tasks]:
|
||||||
|
missing_tasks.append({"content": issue["title"],
|
||||||
|
"url": issue["web_url"]})
|
||||||
|
|
||||||
|
return missing_tasks
|
Loading…
Reference in New Issue