From ad95688f272a455f10925cc4e94ac901aaae1e01 Mon Sep 17 00:00:00 2001
From: David Trattnig <david.trattnig@o94.at>
Date: Fri, 28 Aug 2020 11:59:20 +0200
Subject: [PATCH] Forward plain json to sync node. #6

---
 src/rest/controllers/internal_controller.py |  2 +-
 src/service.py                              | 18 +++++++-----------
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/src/rest/controllers/internal_controller.py b/src/rest/controllers/internal_controller.py
index bdd5d1e..dd4d30e 100644
--- a/src/rest/controllers/internal_controller.py
+++ b/src/rest/controllers/internal_controller.py
@@ -24,7 +24,7 @@ def add_playlog(body):  # noqa: E501
     if connexion.request.is_json:
         body = PlayLog.from_dict(connexion.request.get_json())  # noqa: E501
     service = current_app.config['SERVICE']
-    return service.store_playlog(body)
+    return service.store_playlog(body, connexion.request.get_json())
 
 
 def clock_info():  # noqa: E501
diff --git a/src/service.py b/src/service.py
index 234809e..f99d0dc 100644
--- a/src/service.py
+++ b/src/service.py
@@ -140,7 +140,7 @@ class ApiService():
         return tracklist_schema.dump(tracklist)
 
 
-    def store_playlog(self, data): 
+    def store_playlog(self, data, plain_json): 
         """
         Stores the passed playlog entry.
 
@@ -161,19 +161,15 @@ class ApiService():
             try:
                 playlog = PlayLog(data)
                 playlog.save()
-                playlog = PlayLog.get(data.track_start)
-                self.logger.debug("Stored playlog for '%s'" % playlog.track_start)
+                self.logger.debug("Stored playlog for '%s'" % data.track_start)
             except sqlalchemy.exc.IntegrityError as e:
-                self.logger.info("Playlog for '%s' is already existing in local database. Skipping..." % playlog.track_start)
+                self.logger.info("Playlog for '%s' is already existing in local database. Skipping..." % data.track_start)
 
             # Main Node: Push to Sync Node, if enabled
             if self.node_type == NodeType.MAIN and self.sync_host and self.api_playlog:
-                playlog_schema = PlayLogSchema()
-                json_playlog = playlog_schema.dump(playlog)
-
                 try:
                     api_url = self.sync_host + self.api_playlog
-                    r = requests.post(api_url, json=json_playlog)
+                    r = requests.post(api_url, json=plain_json)
                     if r.status_code == 204:
                         self.logger.info("Successfully pushed playlog for '%s' to '%s'" % (playlog.track_start, self.sync_host))
                         playlog.is_synced = True
@@ -195,17 +191,17 @@ class ApiService():
         return clockinfo_schema.dump(info)
 
 
-    def set_clock_info(self, body, plain_json):
+    def set_clock_info(self, data, plain_json):
         """
         Sets the clock info for the given source (engine1, engine2, other).
 
         Args:
             source_number (Integer): Number of the engine
         """
-        if body.engine_source <= 0:
+        if data.engine_source <= 0:
             return
         
-        clock_info = ClockInfo(body.engine_source, body.current_playlist, body.current_schedule, body.next_schedule)
+        clock_info = ClockInfo(data.engine_source, data.current_playlist, data.current_schedule, data.next_schedule)
         clock_info.merge()
 
         if self.config.get("enable_federation") == "false":
-- 
GitLab