Fixed #81: Search now unaccent letters for queries
This commit is contained in:
parent
9b0d5541e0
commit
62d0381f91
|
@ -37,6 +37,7 @@ DJANGO_APPS = (
|
|||
'django.contrib.sites',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django.contrib.postgres',
|
||||
|
||||
# Useful template tags:
|
||||
# 'django.contrib.humanize',
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
# Generated by Django 2.0.2 on 2018-02-27 18:43
|
||||
from django.db import migrations
|
||||
from django.contrib.postgres.operations import UnaccentExtension
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = []
|
||||
|
||||
operations = [
|
||||
UnaccentExtension()
|
||||
]
|
|
@ -63,7 +63,7 @@ class ArtistViewSet(SearchMixin, viewsets.ReadOnlyModelViewSet):
|
|||
'albums__tracks__tags'))
|
||||
serializer_class = serializers.ArtistSerializerNested
|
||||
permission_classes = [ConditionalAuthentication]
|
||||
search_fields = ['name']
|
||||
search_fields = ['name__unaccent']
|
||||
filter_class = filters.ArtistFilter
|
||||
ordering_fields = ('id', 'name', 'creation_date')
|
||||
|
||||
|
@ -76,7 +76,7 @@ class AlbumViewSet(SearchMixin, viewsets.ReadOnlyModelViewSet):
|
|||
'tracks__files'))
|
||||
serializer_class = serializers.AlbumSerializerNested
|
||||
permission_classes = [ConditionalAuthentication]
|
||||
search_fields = ['title']
|
||||
search_fields = ['title__unaccent']
|
||||
ordering_fields = ('creation_date',)
|
||||
|
||||
|
||||
|
@ -133,9 +133,9 @@ class TrackViewSet(TagViewSetMixin, SearchMixin, viewsets.ReadOnlyModelViewSet):
|
|||
search_fields = ['title', 'artist__name']
|
||||
ordering_fields = (
|
||||
'creation_date',
|
||||
'title',
|
||||
'album__title',
|
||||
'artist__name',
|
||||
'title__unaccent',
|
||||
'album__title__unaccent',
|
||||
'artist__name__unaccent',
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
|
@ -249,7 +249,11 @@ class Search(views.APIView):
|
|||
return Response(results, status=200)
|
||||
|
||||
def get_tracks(self, query):
|
||||
search_fields = ['mbid', 'title', 'album__title', 'artist__name']
|
||||
search_fields = [
|
||||
'mbid',
|
||||
'title__unaccent',
|
||||
'album__title__unaccent',
|
||||
'artist__name__unaccent']
|
||||
query_obj = utils.get_query(query, search_fields)
|
||||
return (
|
||||
models.Track.objects.all()
|
||||
|
@ -263,7 +267,10 @@ class Search(views.APIView):
|
|||
|
||||
|
||||
def get_albums(self, query):
|
||||
search_fields = ['mbid', 'title', 'artist__name']
|
||||
search_fields = [
|
||||
'mbid',
|
||||
'title__unaccent',
|
||||
'artist__name__unaccent']
|
||||
query_obj = utils.get_query(query, search_fields)
|
||||
return (
|
||||
models.Album.objects.all()
|
||||
|
@ -277,7 +284,7 @@ class Search(views.APIView):
|
|||
|
||||
|
||||
def get_artists(self, query):
|
||||
search_fields = ['mbid', 'name']
|
||||
search_fields = ['mbid', 'name__unaccent']
|
||||
query_obj = utils.get_query(query, search_fields)
|
||||
return (
|
||||
models.Artist.objects.all()
|
||||
|
@ -292,7 +299,7 @@ class Search(views.APIView):
|
|||
|
||||
|
||||
def get_tags(self, query):
|
||||
search_fields = ['slug', 'name']
|
||||
search_fields = ['slug', 'name__unaccent']
|
||||
query_obj = utils.get_query(query, search_fields)
|
||||
|
||||
# We want the shortest tag first
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Search now unaccent letters for queries like "The Dø" or "Björk", yielding more results (#81)
|
Loading…
Reference in New Issue