return tracks instead of radiosessiontrack
This commit is contained in:
parent
31e856c258
commit
591ef6adf3
|
@ -123,7 +123,7 @@ class SessionRadio(SimpleRadio):
|
|||
# get cached RadioTracks if any
|
||||
try:
|
||||
cached_evaluated_radio_tracks = pickle.loads(
|
||||
cache.get(f"radiosessiontracks{self.session.id}")
|
||||
cache.get(f"radiotracks{self.session.id}")
|
||||
)
|
||||
except TypeError:
|
||||
cached_evaluated_radio_tracks = None
|
||||
|
@ -145,26 +145,25 @@ class SessionRadio(SimpleRadio):
|
|||
raise ValueError("No more radio candidates")
|
||||
|
||||
# create the radio session tracks into db in bulk
|
||||
radio_tracks = self.session.add(sliced_queryset)
|
||||
self.session.add(sliced_queryset)
|
||||
|
||||
# evaluate the queryset to save it in cache
|
||||
radio_tracks = list(sliced_queryset)
|
||||
|
||||
if cached_evaluated_radio_tracks is not None:
|
||||
radio_tracks = list(radio_tracks)
|
||||
radio_tracks.extend(cached_evaluated_radio_tracks)
|
||||
logger.info(
|
||||
f"Setting redis cache for radio generation with radio id {self.session.id}"
|
||||
)
|
||||
cache.set(
|
||||
f"radiosessiontracks{self.session.id}", pickle.dumps(radio_tracks), 3600
|
||||
)
|
||||
cache.set(f"radiotracks{self.session.id}", pickle.dumps(radio_tracks), 3600)
|
||||
cache.set(f"radioqueryset{self.session.id}", sliced_queryset, 3600)
|
||||
|
||||
return sliced_queryset
|
||||
|
||||
def get_choices_v2(self, quantity, **kwargs):
|
||||
if cache.get(f"radiosessiontracks{self.session.id}"):
|
||||
if cache.get(f"radiotracks{self.session.id}"):
|
||||
cached_radio_tracks = pickle.loads(
|
||||
cache.get(f"radiosessiontracks{self.session.id}")
|
||||
cache.get(f"radiotracks{self.session.id}")
|
||||
)
|
||||
logger.info("Using redis cache for radio generation")
|
||||
radio_tracks = cached_radio_tracks
|
||||
|
|
|
@ -213,11 +213,9 @@ class V2_RadioSessionViewSet(
|
|||
)
|
||||
# self.perform_create(serializer)
|
||||
# dirty override here, since we use a different serializer for creation and detail
|
||||
evaluated_radio_tracks = pickle.loads(
|
||||
cache.get(f"radiosessiontracks{session.id}")
|
||||
)
|
||||
evaluated_radio_tracks = pickle.loads(cache.get(f"radiotracks{session.id}"))
|
||||
batch = evaluated_radio_tracks[:count]
|
||||
serializer = serializers.RadioSessionTrackSerializer(
|
||||
serializer = TrackSerializer(
|
||||
data=batch,
|
||||
many="true",
|
||||
)
|
||||
|
@ -225,9 +223,7 @@ class V2_RadioSessionViewSet(
|
|||
|
||||
# delete the tracks we sent from the cache
|
||||
new_cached_radiotracks = evaluated_radio_tracks[count:]
|
||||
cache.set(
|
||||
f"radiosessiontracks{session.id}", pickle.dumps(new_cached_radiotracks)
|
||||
)
|
||||
cache.set(f"radiotracks{session.id}", pickle.dumps(new_cached_radiotracks))
|
||||
|
||||
return Response(
|
||||
serializer.data,
|
||||
|
|
|
@ -221,8 +221,7 @@ def test_can_get_track_for_session_from_api_v2(factories, logged_in_api_client):
|
|||
response = logged_in_api_client.get(url, {"session": session.pk})
|
||||
data = json.loads(response.content.decode("utf-8"))
|
||||
|
||||
assert data[0]["track"]["id"] == track.pk
|
||||
assert data[0]["position"] == 1
|
||||
assert data[0]["id"] == track.pk
|
||||
|
||||
next_track = factories["music.Upload"](
|
||||
library__actor=actor, import_status="finished"
|
||||
|
@ -230,8 +229,7 @@ def test_can_get_track_for_session_from_api_v2(factories, logged_in_api_client):
|
|||
response = logged_in_api_client.get(url, {"session": session.pk})
|
||||
data = json.loads(response.content.decode("utf-8"))
|
||||
|
||||
assert data[0]["track"]["id"] == next_track.id
|
||||
assert data[0]["position"] == 2
|
||||
assert data[0]["id"] == next_track.id
|
||||
|
||||
|
||||
def test_related_object_radio_validate_related_object(factories):
|
||||
|
@ -489,9 +487,9 @@ def test_session_radio_excludes_previous_picks_v2(factories, logged_in_api_clien
|
|||
url, {"session": session.pk, "filter_playable": False}
|
||||
)
|
||||
pick = json.loads(response.content.decode("utf-8"))
|
||||
assert pick[0]["track"]["title"] not in previous_choices
|
||||
assert pick[0]["track"]["title"] in [t.title for t in tracks]
|
||||
previous_choices.append(pick[0]["track"]["title"])
|
||||
assert pick[0]["title"] not in previous_choices
|
||||
assert pick[0]["title"] in [t.title for t in tracks]
|
||||
previous_choices.append(pick[0]["title"])
|
||||
|
||||
response = logged_in_api_client.get(url, {"session": session.pk})
|
||||
assert (
|
||||
|
@ -540,8 +538,8 @@ def test_can_cache_radio_track(factories):
|
|||
session = radio.start_session(user)
|
||||
picked = session.radio.pick_many_v2(quantity=1, filter_playable=False)
|
||||
assert len(picked) == 1
|
||||
for t in pickle.loads(cache.get(f"radiosessiontracks{session.id}")):
|
||||
assert t.track in uploads
|
||||
for t in pickle.loads(cache.get(f"radiotracks{session.id}")):
|
||||
assert t in uploads
|
||||
|
||||
|
||||
def test_regenerate_cache_if_not_enought_tracks_in_it(
|
||||
|
|
Loading…
Reference in New Issue