See #344: query parsing

This commit is contained in:
Eliot Berriot 2018-07-03 08:13:13 +02:00
parent b0c9eb8cef
commit d713ad177b
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
4 changed files with 228 additions and 41 deletions

View file

@ -1,7 +1,7 @@
import django_filters
from django.db import models
from funkwhale_api.music import utils
from . import search
PRIVACY_LEVEL_CHOICES = [
("me", "Only me"),
@ -34,5 +34,17 @@ class SearchFilter(django_filters.CharFilter):
def filter(self, qs, value):
if not value:
return qs
query = utils.get_query(value, self.search_fields)
query = search.get_query(value, self.search_fields)
return qs.filter(query)
class SmartSearchFilter(django_filters.CharFilter):
def __init__(self, *args, **kwargs):
self.config = kwargs.pop("config")
super().__init__(*args, **kwargs)
def filter(self, qs, value):
if not value:
return qs
cleaned = self.config.clean(value)
return search.apply(qs, cleaned)