Can now search in library tracks

This commit is contained in:
Eliot Berriot 2018-04-12 23:02:41 +02:00
parent 57bf43bb96
commit 2cef58e6c1
No known key found for this signature in database
GPG Key ID: DD6965E2476E5C27
2 changed files with 24 additions and 0 deletions

View File

@ -1,5 +1,9 @@
import django_filters
from django.db import models
from funkwhale_api.music import utils
PRIVACY_LEVEL_CHOICES = [
('me', 'Only me'),
@ -25,3 +29,15 @@ def privacy_level_query(user, lookup_field='privacy_level'):
'followers', 'instance', 'everyone'
]
})
class SearchFilter(django_filters.CharFilter):
def __init__(self, *args, **kwargs):
self.search_fields = kwargs.pop('search_fields')
super().__init__(*args, **kwargs)
def filter(self, qs, value):
if not value:
return qs
query = utils.get_query(value, self.search_fields)
return qs.filter(query)

View File

@ -1,5 +1,7 @@
import django_filters
from funkwhale_api.common import fields
from . import models
@ -19,6 +21,12 @@ class LibraryFilter(django_filters.FilterSet):
class LibraryTrackFilter(django_filters.FilterSet):
library = django_filters.CharFilter('library__uuid')
q = fields.SearchFilter(search_fields=[
'artist_name',
'title',
'album_title',
'library__actor__domain',
])
class Meta:
model = models.LibraryTrack