Procházet zdrojové kódy

[tasks] Fix emacs scrobbling of tasks

Colin Powell před 1 měsícem
rodič
revize
125da84f4e

+ 1 - 1
vrobbler/apps/scrobbles/scrobblers.py

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

+ 2 - 1
vrobbler/apps/tasks/utils.py

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

+ 17 - 6
vrobbler/apps/tasks/webhooks.py

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