From 798f8cd38eb36cbb7d687cfef7aeb2529b62e5e8 Mon Sep 17 00:00:00 2001
From: David Trattnig <david.trattnig@o94.at>
Date: Sat, 27 Jun 2020 14:33:27 +0200
Subject: [PATCH] Updated spec, date range fixes.

---
 src/models.py                               |  4 ++--
 src/rest/controllers/internal_controller.py | 15 +++++++++++----
 src/rest/swagger/swagger.yaml               |  8 ++++----
 src/rest/test/test_internal_controller.py   |  8 ++++----
 4 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/src/models.py b/src/models.py
index 653cd17..9f31556 100644
--- a/src/models.py
+++ b/src/models.py
@@ -94,12 +94,12 @@ class PlayLog(db.Model):
         def q(page=0, page_size=None):
             query = db.session.query(PlayLog).order_by(PlayLog.track_start.desc())
             if isinstance(from_time, datetime.datetime):
-                if isinstance(from_time, datetime.datetime):
+                if isinstance(to_time, datetime.datetime):
                     query = query.filter(PlayLog.track_start >= from_time and PlayLog.track_start < to_time)
                 else:
                     query = query.filter(PlayLog.track_start >= from_time)
             if skip_synced == True:
-                query = query.filter(PlayLog.is_synced == False)
+                query = query.filter(not PlayLog.is_synced)
             listen(query, 'before_compile', apply_limit(page, page_size), retval=True)
             return query
 
diff --git a/src/rest/controllers/internal_controller.py b/src/rest/controllers/internal_controller.py
index e545aab..85dee7f 100644
--- a/src/rest/controllers/internal_controller.py
+++ b/src/rest/controllers/internal_controller.py
@@ -77,7 +77,7 @@ def get_source_health(number):  # noqa: E501
     return service.get_source_health(number)
 
 
-def list_playlog(from_date=None, to_dat=None, page=None, limit=None, skip_synced=None):  # noqa: E501
+def list_playlog(from_date=None, to_date=None, page=None, limit=None, skip_synced=None):  # noqa: E501
     """List tracks in the play-log since the given timestamp
 
     Get paginated playlog entries for since the given timestamp.  # noqa: E501
@@ -94,9 +94,16 @@ def list_playlog(from_date=None, to_dat=None, page=None, limit=None, skip_synced
     :rtype: List[PlayLog]
     """
     service = current_app.config['SERVICE']
-    from_date = parse(from_date)
-    to_date = parse(to_date)
-    return service.list_playlog(page, limit, from_date, to_date, skip_synced)
+    fd = None
+    td = None
+
+    try:
+        fd = parse(from_date)
+        td = parse(to_date)
+    except Exception:
+        service.logger.info("Invalid 'from_date' (%s) or 'to_date' (%s) for 'list_playlog'" % (str(from_date), str(to_date)))
+
+    return service.list_playlog(page, limit, fd, td, skip_synced)
 
 
 def log_source_health(body, number):  # noqa: E501
diff --git a/src/rest/swagger/swagger.yaml b/src/rest/swagger/swagger.yaml
index 42ac6c2..3a0d71d 100644
--- a/src/rest/swagger/swagger.yaml
+++ b/src/rest/swagger/swagger.yaml
@@ -146,19 +146,19 @@ paths:
         Get paginated playlog entries for since the given timestamp.
       operationId: list_playlog
       parameters:
-      - name: from
+      - name: from_date
         in: query
         description: Get entries after this timestamp
-        required: true
+        required: false
         style: form
         explode: true
         schema:
           type: string
         example: 2020-08-29T09:12:33.001Z
-      - name: to
+      - name: to_date
         in: query
         description: Get entries before this timestamp
-        required: true
+        required: false
         style: form
         explode: true
         schema:
diff --git a/src/rest/test/test_internal_controller.py b/src/rest/test/test_internal_controller.py
index 8a1dbbc..bc70005 100644
--- a/src/rest/test/test_internal_controller.py
+++ b/src/rest/test/test_internal_controller.py
@@ -96,11 +96,11 @@ class TestInternalController(BaseTestCase):
 
         List tracks in the play-log since the given timestamp
         """
-        query_string = [('page', 56),
+        query_string = [('from_date', '2020-09-29T09:12:33.001Z'),
+                        ('to_date', '2020-11-29T09:12:33.001Z'),
+                        ('page', 56),
                         ('limit', 200),
-                        ('skip_synced', true),
-                        ('from', '2020-08-15T15:40:44'),
-                        ('to', '2020-10-15T15:40:44'))]
+                        ('skip_synced', true)]
         response = self.client.open(
             '/api/v1/playlog/',
             method='GET',
-- 
GitLab