Compare commits

..

4 Commits
17.1 ... 17.3

3 changed files with 28 additions and 14 deletions

View File

@ -409,9 +409,9 @@ def todoist_scrobble_task(
user_id: int,
started: bool = False,
stopped: bool = False,
context_list: list = [],
user_context_list: list[str] = [],
) -> Scrobble:
title = get_title_from_labels(todoist_task.get("todoist_label_list", []), context_list)
title = get_title_from_labels(todoist_task.get("todoist_label_list", []), user_context_list)
task = Task.find_or_create(title)
timestamp = pendulum.parse(todoist_task.get("updated_at", timezone.now()))
@ -533,10 +533,10 @@ def emacs_scrobble_task(
user_id: int,
started: bool = False,
stopped: bool = False,
context_list: list[str] = [],
user_context_list: list[str] = [],
) -> Scrobble | None:
source_id = task_data.get("source_id")
title = get_title_from_labels(task_data.get("labels", []), context_list)
title = get_title_from_labels(task_data.get("labels", []), user_context_list)
task = Task.find_or_create(title)

View File

@ -1,19 +1,22 @@
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
label = label.capitalize()
if label in task_context_labels:
title = label.capitalize()
title = label
continue
if title == "Unknown":
logger.warning(
"Missing a prefix and suffix tag for task",
extra={"labels": labels},
"Missing a configured title context for task",
extra={"labels": labels, "task_context_labels": task_context_labels},
)
return title

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,
user_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).first()
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,
user_context_list=user_profile.task_context_tags,
)
if not scrobble: