From eefb99a59c39984ad34610525ab89e6274fdc38f Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Wed, 11 Mar 2020 12:28:26 +0100 Subject: [PATCH] Clock API. --- api.py | 49 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/api.py b/api.py index 597540dc..8bff70b7 100644 --- a/api.py +++ b/api.py @@ -112,6 +112,7 @@ class EngineApi: EngineApi.track_schema = TrackServiceSchema() EngineApi.report_schema = ReportSchema(many=True) EngineApi.schedule_schema = ScheduleSchema(many=True) + EngineApi.clockdata_schema = ClockDataSchema() # Define API routes self.api.add_resource(TrackServiceResource, config.api_prefix + "/trackservice/") @@ -120,6 +121,7 @@ class EngineApi: self.api.add_resource(TracksByDayResource, config.api_prefix + "/trackservice/date/<string:date_string>") self.api.add_resource(ReportResource, config.api_prefix + "/report/<string:year_month>") self.api.add_resource(UpcomingSchedulesResource, config.api_prefix + "/schedule/upcoming") + self.api.add_resource(ClockDataResource, config.api_prefix + "/clock") self.logger.info("Engine API routes successfully set!") @@ -181,10 +183,6 @@ class TrackServiceSchema(ma.Schema): "schedule.musicfocus", "schedule.is_repetition", - "schedule.show_id", - "schedule.show_name", - "schedule.show_hosts", - "track", "track_start", @@ -192,6 +190,17 @@ class TrackServiceSchema(ma.Schema): ) +class ClockDataSchema(ma.Schema): + class Meta: + fields = ( + "current", + "next", + "track_id", + "track_start", + "track" + ) + + class ScheduleSchema(ma.Schema): class Meta: fields = ( @@ -267,7 +276,39 @@ class TrackResource(Resource): def get(self, track_id): track = TrackService.select_one(track_id) return EngineApi.track_schema.dump(track) + + +class ClockDataResource(Resource): + logger = None + def __init__(self): + self.logger = logging.getLogger("engine-api") + + def get(self): + item = TrackService.select_current() + next_schedule = Schedule.select_upcoming(1) + if next_schedule: + next_schedule = next_schedule[0].as_dict() + next_schedule["playlist"] = None + else: + next_schedule = {} + + clockdata = { + "track_id": item.id, + "track_start": item.track_start, + "track": item.track, + "current": {}, + "next": next_schedule + } + + if item.schedule: + clockdata["current"] = item.schedule.as_dict() + if item.schedule.playlist: + clockdata["current"]["playlist"] = item.schedule.playlist[0].as_dict() + + clockdata["current"]["show"] = item.show + return EngineApi.clockdata_schema.dump(clockdata) + class CurrentTrackResource(Resource): logger = None -- GitLab