Can now search in library tracks
This commit is contained in:
parent
57bf43bb96
commit
2cef58e6c1
|
@ -1,5 +1,9 @@
|
||||||
|
import django_filters
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
from funkwhale_api.music import utils
|
||||||
|
|
||||||
|
|
||||||
PRIVACY_LEVEL_CHOICES = [
|
PRIVACY_LEVEL_CHOICES = [
|
||||||
('me', 'Only me'),
|
('me', 'Only me'),
|
||||||
|
@ -25,3 +29,15 @@ def privacy_level_query(user, lookup_field='privacy_level'):
|
||||||
'followers', 'instance', 'everyone'
|
'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)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import django_filters
|
import django_filters
|
||||||
|
|
||||||
|
from funkwhale_api.common import fields
|
||||||
|
|
||||||
from . import models
|
from . import models
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,6 +21,12 @@ class LibraryFilter(django_filters.FilterSet):
|
||||||
|
|
||||||
class LibraryTrackFilter(django_filters.FilterSet):
|
class LibraryTrackFilter(django_filters.FilterSet):
|
||||||
library = django_filters.CharFilter('library__uuid')
|
library = django_filters.CharFilter('library__uuid')
|
||||||
|
q = fields.SearchFilter(search_fields=[
|
||||||
|
'artist_name',
|
||||||
|
'title',
|
||||||
|
'album_title',
|
||||||
|
'library__actor__domain',
|
||||||
|
])
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.LibraryTrack
|
model = models.LibraryTrack
|
||||||
|
|
Loading…
Reference in New Issue