Skip to content
Snippets Groups Projects
Verified Commit 2cef58e6 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Can now search in library tracks

parent 57bf43bb
No related branches found
No related tags found
No related merge requests found
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'): ...@@ -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)
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): ...@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment