diff --git a/api/funkwhale_api/playlists/filters.py b/api/funkwhale_api/playlists/filters.py index cf8e7dd2144514f3afdc5fdb73572a87547c12c7..bc49415100a3c5d3d53fb5fcb680195934d538c3 100644 --- a/api/funkwhale_api/playlists/filters.py +++ b/api/funkwhale_api/playlists/filters.py @@ -1,13 +1,22 @@ from django_filters import rest_framework as filters +from funkwhale_api.music import utils + from . import models class PlaylistFilter(filters.FilterSet): + q = filters.CharFilter(name='_', method='filter_q') class Meta: model = models.Playlist fields = { 'user': ['exact'], + 'name': ['exact', 'icontains'], + 'q': 'exact', } + + def filter_q(self, queryset, name, value): + query = utils.get_query(value, ['name', 'user__username']) + return queryset.filter(query) diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index 5de6067ffe9935121013c373a0c7c71719b79273..4880b1886d9c873595d978f20969a0f109400fd0 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -8,15 +8,14 @@ from rest_framework.decorators import detail_route from rest_framework.response import Response from rest_framework.permissions import IsAuthenticatedOrReadOnly -from funkwhale_api.music.models import Track from funkwhale_api.common import permissions from funkwhale_api.common import fields +from funkwhale_api.music.models import Track from . import filters from . import models from . import serializers - class PlaylistViewSet( mixins.RetrieveModelMixin, mixins.CreateModelMixin, @@ -37,6 +36,7 @@ class PlaylistViewSet( ] owner_checks = ['write'] filter_class = filters.PlaylistFilter + ordering_fields = ('id', 'name', 'creation_date', 'modification_date') def get_serializer_class(self): if self.request.method in ['PUT', 'PATCH', 'DELETE', 'POST']: