More filters / ordering option on playlist API
This commit is contained in:
parent
f503466a24
commit
bf6fe44bed
|
@ -1,13 +1,22 @@
|
||||||
from django_filters import rest_framework as filters
|
from django_filters import rest_framework as filters
|
||||||
|
|
||||||
|
from funkwhale_api.music import utils
|
||||||
|
|
||||||
from . import models
|
from . import models
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PlaylistFilter(filters.FilterSet):
|
class PlaylistFilter(filters.FilterSet):
|
||||||
|
q = filters.CharFilter(name='_', method='filter_q')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Playlist
|
model = models.Playlist
|
||||||
fields = {
|
fields = {
|
||||||
'user': ['exact'],
|
'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)
|
||||||
|
|
|
@ -8,15 +8,14 @@ from rest_framework.decorators import detail_route
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.permissions import IsAuthenticatedOrReadOnly
|
from rest_framework.permissions import IsAuthenticatedOrReadOnly
|
||||||
|
|
||||||
from funkwhale_api.music.models import Track
|
|
||||||
from funkwhale_api.common import permissions
|
from funkwhale_api.common import permissions
|
||||||
from funkwhale_api.common import fields
|
from funkwhale_api.common import fields
|
||||||
|
from funkwhale_api.music.models import Track
|
||||||
|
|
||||||
from . import filters
|
from . import filters
|
||||||
from . import models
|
from . import models
|
||||||
from . import serializers
|
from . import serializers
|
||||||
|
|
||||||
|
|
||||||
class PlaylistViewSet(
|
class PlaylistViewSet(
|
||||||
mixins.RetrieveModelMixin,
|
mixins.RetrieveModelMixin,
|
||||||
mixins.CreateModelMixin,
|
mixins.CreateModelMixin,
|
||||||
|
@ -37,6 +36,7 @@ class PlaylistViewSet(
|
||||||
]
|
]
|
||||||
owner_checks = ['write']
|
owner_checks = ['write']
|
||||||
filter_class = filters.PlaylistFilter
|
filter_class = filters.PlaylistFilter
|
||||||
|
ordering_fields = ('id', 'name', 'creation_date', 'modification_date')
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
if self.request.method in ['PUT', 'PATCH', 'DELETE', 'POST']:
|
if self.request.method in ['PUT', 'PATCH', 'DELETE', 'POST']:
|
||||||
|
|
Loading…
Reference in New Issue