get instead of post
This commit is contained in:
parent
4b65bcba95
commit
064accf288
|
@ -136,8 +136,9 @@ class V1_RadioSessionTrackViewSet(mixins.CreateModelMixin, viewsets.GenericViewS
|
|||
session = serializer.validated_data["session"]
|
||||
if not request.user.is_authenticated and not request.session.session_key:
|
||||
self.request.session.create()
|
||||
if not request.user == session.user or not (
|
||||
request.session.session_key == session.session_key and session.session_key
|
||||
if not request.user == session.user or (
|
||||
not request.session.session_key == session.session_key
|
||||
and not session.session_key
|
||||
):
|
||||
return Response(status=status.HTTP_403_FORBIDDEN)
|
||||
|
||||
|
@ -164,18 +165,19 @@ class V1_RadioSessionTrackViewSet(mixins.CreateModelMixin, viewsets.GenericViewS
|
|||
return super().get_serializer_class(*args, **kwargs)
|
||||
|
||||
|
||||
class RadioSessionTracksViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
|
||||
class RadioSessionTracksViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
|
||||
"""Return a list of RadioSessionTracks"""
|
||||
|
||||
serializer_class = serializers.RadioSessionTrackSerializer
|
||||
queryset = models.RadioSessionTrack.objects.all()
|
||||
permission_classes = []
|
||||
|
||||
@extend_schema(operation_id="get_radio_tracks")
|
||||
def create(self, request, *args, **kwargs):
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
@extend_schema(operation_id="get_radio_tracks_get")
|
||||
def list(self, request, *args, **kwargs):
|
||||
serializer = self.get_serializer(data=request.query_params)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
session = serializer.validated_data["session"]
|
||||
|
||||
count = (
|
||||
serializer.validated_data["count"]
|
||||
if "count" in serializer.validated_data.keys()
|
||||
|
@ -183,18 +185,18 @@ class RadioSessionTracksViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet
|
|||
)
|
||||
# this is used for test purpose.
|
||||
filter_playable = (
|
||||
request.data["filter_playable"]
|
||||
if "filter_playable" in request.data.keys()
|
||||
request.query_params["filter_playable"]
|
||||
if "filter_playable" in request.query_params.keys()
|
||||
else True
|
||||
)
|
||||
if not request.user.is_authenticated and not request.session.session_key:
|
||||
self.request.session.create()
|
||||
|
||||
if not request.user == session.user or not (
|
||||
request.session.session_key == session.session_key and session.session_key
|
||||
if not request.user == session.user or (
|
||||
not request.session.session_key == session.session_key
|
||||
and not session.session_key
|
||||
):
|
||||
return Response(status=status.HTTP_403_FORBIDDEN)
|
||||
|
||||
try:
|
||||
session.radio.pick_many_v2(count, filter_playable=filter_playable)
|
||||
except ValueError:
|
||||
|
@ -213,7 +215,6 @@ class RadioSessionTracksViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet
|
|||
many="true",
|
||||
)
|
||||
serializer.is_valid()
|
||||
headers = self.get_success_headers(serializer.data)
|
||||
|
||||
# delete the tracks we sent from the cache
|
||||
new_cached_radiotracks = evaluated_radio_tracks[count:]
|
||||
|
@ -222,10 +223,11 @@ class RadioSessionTracksViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet
|
|||
)
|
||||
|
||||
return Response(
|
||||
serializer.data, status=status.HTTP_201_CREATED, headers=headers
|
||||
serializer.data,
|
||||
status=status.HTTP_201_CREATED,
|
||||
)
|
||||
|
||||
def get_serializer_class(self, *args, **kwargs):
|
||||
if self.action == "create":
|
||||
if self.action == "list":
|
||||
return serializers.RadioSessionTrackSerializerCreate
|
||||
return super().get_serializer_class(*args, **kwargs)
|
||||
|
|
|
@ -203,7 +203,7 @@ def test_can_get_track_for_session_from_api_v2(factories, logged_in_api_client):
|
|||
session = models.RadioSession.objects.latest("id")
|
||||
|
||||
url = reverse("api:v2:radios:tracks-list")
|
||||
response = logged_in_api_client.post(url, {"session": session.pk})
|
||||
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
|
||||
|
@ -212,7 +212,7 @@ def test_can_get_track_for_session_from_api_v2(factories, logged_in_api_client):
|
|||
next_track = factories["music.Upload"](
|
||||
library__actor=actor, import_status="finished"
|
||||
).track
|
||||
response = logged_in_api_client.post(url, {"session": session.pk})
|
||||
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
|
||||
|
@ -470,7 +470,7 @@ def test_session_radio_excludes_previous_picks_v2(factories, logged_in_api_clien
|
|||
previous_choices = []
|
||||
|
||||
for i in range(5):
|
||||
response = logged_in_api_client.post(
|
||||
response = logged_in_api_client.get(
|
||||
url, {"session": session.pk, "filter_playable": False}
|
||||
)
|
||||
pick = json.loads(response.content.decode("utf-8"))
|
||||
|
@ -478,7 +478,7 @@ def test_session_radio_excludes_previous_picks_v2(factories, logged_in_api_clien
|
|||
assert pick[0]["track"]["title"] in [t.title for t in tracks]
|
||||
previous_choices.append(pick[0]["track"]["title"])
|
||||
|
||||
response = logged_in_api_client.post(url, {"session": session.pk})
|
||||
response = logged_in_api_client.get(url, {"session": session.pk})
|
||||
assert (
|
||||
json.loads(response.content.decode("utf-8"))
|
||||
== "Radio doesn't have more candidates"
|
||||
|
@ -542,10 +542,10 @@ def test_regenerate_cache_if_not_enought_tracks_in_it(
|
|||
response = logged_in_api_client.post(url, {"radio_type": "random"})
|
||||
session = models.RadioSession.objects.latest("id")
|
||||
url = reverse("api:v2:radios:tracks-list")
|
||||
logged_in_api_client.post(
|
||||
logged_in_api_client.get(
|
||||
url, {"session": session.pk, "count": 9, "filter_playable": False}
|
||||
)
|
||||
response = logged_in_api_client.post(
|
||||
response = logged_in_api_client.get(
|
||||
url, {"session": session.pk, "count": 10, "filter_playable": False}
|
||||
)
|
||||
pick = json.loads(response.content.decode("utf-8"))
|
||||
|
|
Loading…
Reference in New Issue