From 8badc088182701b9384455f8ee823dfbd456cd46 Mon Sep 17 00:00:00 2001 From: Josh W Date: Sat, 23 Nov 2019 19:42:29 -0500 Subject: [PATCH] Next requests are now based on queued, not played. --- savepointradio/api/views/controls.py | 6 +++--- savepointradio/profiles/managers.py | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/savepointradio/api/views/controls.py b/savepointradio/api/views/controls.py index 1e2517a..17c5b33 100644 --- a/savepointradio/api/views/controls.py +++ b/savepointradio/api/views/controls.py @@ -57,9 +57,9 @@ class NextRequest(RetrieveAPIView): dj_profile = RadioProfile.objects.get(user__is_dj=True) limit = get_setting('songs_per_jingle') - played_songs = SongRequest.music.get_played_requests(limit) - if [j for j in played_songs if j.song.is_jingle]: - if not SongRequest.music.unplayed().exists(): + queued_songs = SongRequest.music.get_queued_requests(limit) + if [j for j in queued_songs if j.song.is_jingle]: + if not SongRequest.music.new_requests().exists(): random_song = Song.music.get_random_requestable_song() next_play = SongRequest.objects.create(profile=dj_profile, song=random_song) diff --git a/savepointradio/profiles/managers.py b/savepointradio/profiles/managers.py index 5d146cd..012f0cf 100644 --- a/savepointradio/profiles/managers.py +++ b/savepointradio/profiles/managers.py @@ -12,10 +12,25 @@ class RequestManager(models.Manager): return self.get_queryset().filter(models.Q(queued_at__isnull=False) | models.Q(played_at__isnull=False)) + def not_queued(self): + return self.get_queryset().filter(queued_at__isnull=True) + + def queued(self): + return self.get_queryset().filter(models.Q(queued_at__isnull=False) & + models.Q(played_at__isnull=True)) + + def new_requests(self): + return self.unplayed().not_queued() + def get_played_requests(self, limit=None): if limit: return self.played()[0:limit] return self.played() + def get_queued_requests(self, limit=None): + if limit: + return self.queued()[0:limit] + return self.queued() + def next_request(self): - return self.unplayed().earliest('created_date') + return self.new_requests().earliest('created_date')