[tasks] Fix emacs scrobbling of tasks

This commit is contained in:
2025-06-27 11:32:09 -04:00
parent 36ceb4c7fe
commit 125da84f4e
3 changed files with 20 additions and 8 deletions

View File

@ -409,7 +409,7 @@ def todoist_scrobble_task(
user_id: int,
started: bool = False,
stopped: bool = False,
context_list: list = [],
context_list: list[str] = [],
) -> Scrobble:
title = get_title_from_labels(todoist_task.get("todoist_label_list", []), context_list)
task = Task.find_or_create(title)

View File

@ -1,11 +1,12 @@
import logging
from django.conf import settings
logger = logging.getLogger(__name__)
def get_title_from_labels(labels: list[str], user_context_labels: list[str] = []) -> str:
title = "Unknown"
task_context_labels: list = user_context_labels or DEFAULT_TASK_CONTEXT_LABELS
task_context_labels: list = user_context_labels or settings.DEFAULT_TASK_CONTEXT_TAG_LIST
for label in labels:
# TODO We may also want to take a user list of labels instead
if label in task_context_labels:

View File

@ -71,9 +71,9 @@ def todoist_webhook(request):
"updated_at": task_data.get("updated_at"),
"details": task_data.get("description"),
"notes": event_data.get("content"),
"is_deleted": True
if event_data.get("is_deleted") == "true"
else False,
"is_deleted": (
True if event_data.get("is_deleted") == "true" else False
),
}
if (is_added and not todoist_note) or (is_updated and not todoist_task):
@ -90,12 +90,17 @@ def todoist_webhook(request):
)
return Response({}, status=status.HTTP_304_NOT_MODIFIED)
user_profile = UserProfile.objects.filter(todoist_user_id=post_data.get("user_id")).first()
user_profile = UserProfile.objects.filter(
todoist_user_id=post_data.get("user_id", None)
).first()
scrobble = None
if todoist_task:
scrobble = todoist_scrobble_task(
todoist_task, user_profile.user_id, stopped=task_stopped, context_list=user_profile.task_context_tags
todoist_task,
user_profile.user_id,
stopped=task_stopped,
context_list=user_profile.task_context_tags,
)
if todoist_note:
@ -139,10 +144,16 @@ def emacs_webhook(request):
if not user_id:
user_id = 1
user_profile = UserProfile.objects.filter(user_id=user_id)
scrobble = None
if post_data.get("source_id"):
scrobble = emacs_scrobble_task(
post_data, user_id, started=task_in_progress, stopped=task_stopped
post_data,
user_id,
started=task_in_progress,
stopped=task_stopped,
context_list=user_profile.task_context_tags,
)
if not scrobble: