From bf6fe44bedc078821078c5ca7039ee3a5397b3c6 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Wed, 21 Mar 2018 11:58:11 +0100 Subject: [PATCH] More filters / ordering option on playlist API --- api/funkwhale_api/playlists/filters.py | 9 +++++++++ api/funkwhale_api/playlists/views.py | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/api/funkwhale_api/playlists/filters.py b/api/funkwhale_api/playlists/filters.py index cf8e7dd214..bc49415100 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 5de6067ffe..4880b1886d 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']: -- GitLab