diff --git a/actioner/scheduler/__init__.py b/actioner/scheduler/__init__.py index 15bff66..47d0c63 100644 --- a/actioner/scheduler/__init__.py +++ b/actioner/scheduler/__init__.py @@ -7,7 +7,7 @@ from .todoist_assigned_issues import todoist_assigned_issues def create_scheduler(): scheduler = AsyncIOScheduler() - scheduler.add_job(todoist_assigned_issues, 'interval', minutes=15) + scheduler.add_job(todoist_assigned_issues) return scheduler diff --git a/actioner/scheduler/todoist_assigned_issues.py b/actioner/scheduler/todoist_assigned_issues.py index 05d9d94..3b13104 100644 --- a/actioner/scheduler/todoist_assigned_issues.py +++ b/actioner/scheduler/todoist_assigned_issues.py @@ -1,3 +1,4 @@ +import re from typing import Dict from github import Issue @@ -15,6 +16,8 @@ LABEL_TO_STATUS = { 'should have': 2 } +ISSUE_NUMBER_RE = re.compile(r"\[#(\d+?)\]") + def get_status_for_issue(issue: Issue) -> int: priorities = { @@ -70,4 +73,13 @@ def todoist_assigned_issues(): if existing_task_id is not None: todoist.items.complete([existing_task_id]) + for existing_task_id, existing_task_content in existing_tasks.items(): + if repo.html_url not in existing_task_content: + continue + issue_number = ISSUE_NUMBER_RE.match(existing_task_content).group(1) + issue = repo.get_issue(int(issue_number)) + assignees = {assignee.login for assignee in issue.assignees} + if me.login not in assignees: + todoist.items.delete([existing_task_id]) + todoist.commit()