From 964ee7e07c871dabcce289a0c1ad49323d784e43 Mon Sep 17 00:00:00 2001
From: jo <ljonas@riseup.net>
Date: Thu, 23 Mar 2023 02:16:10 +0100
Subject: [PATCH] refactor(playout): add ended check to event class

---
 playout/libretime_playout/player/events.py     |  3 +++
 playout/libretime_playout/player/liquidsoap.py | 11 ++---------
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/playout/libretime_playout/player/events.py b/playout/libretime_playout/player/events.py
index 3d08cf238..a057772ab 100644
--- a/playout/libretime_playout/player/events.py
+++ b/playout/libretime_playout/player/events.py
@@ -60,6 +60,9 @@ class BaseEvent(BaseModel):
     def end_key(self) -> str:
         return datetime_to_event_key(self.end)
 
+    def ended(self) -> bool:
+        return datetime.utcnow() > self.end
+
 
 class FileEvent(BaseEvent):
     type: Literal[EventKind.FILE]
diff --git a/playout/libretime_playout/player/liquidsoap.py b/playout/libretime_playout/player/liquidsoap.py
index c614f4f4e..5e3902a7a 100644
--- a/playout/libretime_playout/player/liquidsoap.py
+++ b/playout/libretime_playout/player/liquidsoap.py
@@ -195,15 +195,10 @@ class PypoLiquidsoap:
         elif event.event_type == "switch_off":
             self.telnet_liquidsoap.switch_source("live_dj", "off")
 
-    def is_media_item_finished(self, media_item: Optional[AnyEvent]) -> bool:
-        if media_item is None:
-            return True
-        return datetime.utcnow() > media_item.end
-
     def find_available_queue(self) -> int:
         available_queue = None
         for queue_id, item in self.liq_queue_tracker.items():
-            if item is None or self.is_media_item_finished(item):
+            if item is None or item.ended():
                 # queue "i" is available. Push to this queue
                 available_queue = queue_id
 
@@ -252,9 +247,7 @@ class PypoLiquidsoap:
             row_id_map: Dict[int, FileEvent] = {}
             liq_queue_ids: Set[int] = set()
             for queue_item in self.liq_queue_tracker.values():
-                if queue_item is not None and not self.is_media_item_finished(
-                    queue_item
-                ):
+                if queue_item is not None and not queue_item.ended():
                     liq_queue_ids.add(queue_item.row_id)
                     row_id_map[queue_item.row_id] = queue_item