Fixed #384: unfiltered results in favorites API
This commit is contained in:
parent
f9dbda83bf
commit
25755ad39b
|
@ -0,0 +1,15 @@
|
||||||
|
from django_filters import rest_framework as filters
|
||||||
|
|
||||||
|
from funkwhale_api.common import fields
|
||||||
|
|
||||||
|
from . import models
|
||||||
|
|
||||||
|
|
||||||
|
class TrackFavoriteFilter(filters.FilterSet):
|
||||||
|
q = fields.SearchFilter(
|
||||||
|
search_fields=["track__title", "track__artist__name", "track__album__title"]
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.TrackFavorite
|
||||||
|
fields = ["user", "q"]
|
|
@ -7,7 +7,7 @@ from funkwhale_api.activity import record
|
||||||
from funkwhale_api.common import fields, permissions
|
from funkwhale_api.common import fields, permissions
|
||||||
from funkwhale_api.music.models import Track
|
from funkwhale_api.music.models import Track
|
||||||
|
|
||||||
from . import models, serializers
|
from . import filters, models, serializers
|
||||||
|
|
||||||
|
|
||||||
class TrackFavoriteViewSet(
|
class TrackFavoriteViewSet(
|
||||||
|
@ -17,6 +17,7 @@ class TrackFavoriteViewSet(
|
||||||
viewsets.GenericViewSet,
|
viewsets.GenericViewSet,
|
||||||
):
|
):
|
||||||
|
|
||||||
|
filter_class = filters.TrackFavoriteFilter
|
||||||
serializer_class = serializers.UserTrackFavoriteSerializer
|
serializer_class = serializers.UserTrackFavoriteSerializer
|
||||||
queryset = (
|
queryset = (
|
||||||
models.TrackFavorite.objects.all()
|
models.TrackFavorite.objects.all()
|
||||||
|
|
|
@ -20,8 +20,9 @@ def test_user_can_add_favorite(factories):
|
||||||
def test_user_can_get_his_favorites(api_request, factories, logged_in_client, client):
|
def test_user_can_get_his_favorites(api_request, factories, logged_in_client, client):
|
||||||
r = api_request.get("/")
|
r = api_request.get("/")
|
||||||
favorite = factories["favorites.TrackFavorite"](user=logged_in_client.user)
|
favorite = factories["favorites.TrackFavorite"](user=logged_in_client.user)
|
||||||
|
factories["favorites.TrackFavorite"]()
|
||||||
url = reverse("api:v1:favorites:tracks-list")
|
url = reverse("api:v1:favorites:tracks-list")
|
||||||
response = logged_in_client.get(url)
|
response = logged_in_client.get(url, {"user": logged_in_client.user.pk})
|
||||||
expected = [
|
expected = [
|
||||||
{
|
{
|
||||||
"user": users_serializers.UserBasicSerializer(
|
"user": users_serializers.UserBasicSerializer(
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fixed unfiltered results in favorites API (#384)
|
|
@ -11,7 +11,7 @@
|
||||||
<translate
|
<translate
|
||||||
translate-plural="%{ count } favorites"
|
translate-plural="%{ count } favorites"
|
||||||
:translate-n="$store.state.favorites.count"
|
:translate-n="$store.state.favorites.count"
|
||||||
:translate-params="{count: $store.state.favorites.count}">
|
:translate-params="{count: results.count}">
|
||||||
1 favorite
|
1 favorite
|
||||||
</translate>
|
</translate>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
|
@ -53,10 +53,13 @@ export default {
|
||||||
toggle ({getters, dispatch}, id) {
|
toggle ({getters, dispatch}, id) {
|
||||||
dispatch('set', {id, value: !getters['isFavorite'](id)})
|
dispatch('set', {id, value: !getters['isFavorite'](id)})
|
||||||
},
|
},
|
||||||
fetch ({dispatch, state, commit}, url) {
|
fetch ({dispatch, state, commit, rootState}, url) {
|
||||||
// will fetch favorites by batches from API to have them locally
|
// will fetch favorites by batches from API to have them locally
|
||||||
|
let params = {
|
||||||
|
user: rootState.auth.profile.id
|
||||||
|
}
|
||||||
url = url || 'favorites/tracks/'
|
url = url || 'favorites/tracks/'
|
||||||
return axios.get(url).then((response) => {
|
return axios.get(url, {params: params}).then((response) => {
|
||||||
logger.default.info('Fetched a batch of ' + response.data.results.length + ' favorites')
|
logger.default.info('Fetched a batch of ' + response.data.results.length + ' favorites')
|
||||||
response.data.results.forEach(result => {
|
response.data.results.forEach(result => {
|
||||||
commit('track', {id: result.track, value: true})
|
commit('track', {id: result.track, value: true})
|
||||||
|
|
Loading…
Reference in New Issue