Quellcode durchsuchen

[tasks] Fix catch for no scrobble available

Colin Powell vor 8 Monaten
Ursprung
Commit
c4359a2331
2 geänderte Dateien mit 15 neuen und 3 gelöschten Zeilen
  1. 11 2
      vrobbler/apps/scrobbles/scrobblers.py
  2. 4 1
      vrobbler/apps/tasks/webhooks.py

+ 11 - 2
vrobbler/apps/scrobbles/scrobblers.py

@@ -310,15 +310,24 @@ def manual_scrobble_from_url(url: str, user_id: int) -> Scrobble:
     return eval(scrobble_fn)(item_id, user_id)
 
 
-def todoist_scrobble_task_finish(todoist_task: dict, user_id: int) -> Scrobble:
+def todoist_scrobble_task_finish(
+    todoist_task: dict, user_id: int
+) -> Optional[Scrobble]:
     scrobble = Scrobble.objects.filter(
         user_id=user_id, log__todoist_id=todoist_task.get("todoist_id")
     ).first()
 
+    if not scrobble:
+        logger.info(
+            "[todoist_scrobble_task_finish] todoist webhook finish called on missing task"
+        )
+        return
+
     if not scrobble.in_progress or scrobble.played_to_completion:
-        logger.warning(
+        logger.info(
             "[todoist_scrobble_task_finish] todoist webhook finish called on finished task"
         )
+        return
 
     scrobble.stop(force_finish=True)
 

+ 4 - 1
vrobbler/apps/tasks/webhooks.py

@@ -67,7 +67,10 @@ def todoist_webhook(request):
         scrobble = todoist_scrobble_task(todoist_task, user_id)
 
     if not scrobble:
-        return Response({}, status=status.HTTP_400_BAD_REQUEST)
+        return Response(
+            {"error": "No scrobble found to be updated"},
+            status=status.HTTP_400_BAD_REQUEST,
+        )
 
     logger.info(
         "[todoist_webhook] finished",