def get_tracks(self, query): search_fields = [ "mbid", "title__unaccent", "album__title__unaccent", "artist__name__unaccent", ] if settings.USE_FULL_TEXT_SEARCH: query_obj = utils.get_fts_query( query, fts_fields=["body_text", "album__body_text", "artist__body_text"], model=models.Track, ) else: query_obj = utils.get_query(query, search_fields) qs = ( models.Track.objects.all() .filter(query_obj) .prefetch_related( "artist", "attributed_to", Prefetch( "album", queryset=models.Album.objects.select_related( "artist", "attachment_cover", "attributed_to" ), ), ) ) return common_utils.order_for_search(qs, "title")[: self.max_results]
def search(request): query_string = '' found_entries = None if ('q' in request.GET) and request.GET['q'].strip(): query_string = request.GET['q'] entry_query = utils.get_query(query_string, ['title']) posts = Post.objects.filter(entry_query).order_by('created') return render(request, 'search.html', {'query_string': query_string, 'posts': posts}) else: return render(request, 'search.html', {'query_string': 'Null', 'found_entries': 'Enter a search term'})
def get_artists(self, query): search_fields = ["mbid", "name__unaccent"] if settings.USE_FULL_TEXT_SEARCH: query_obj = utils.get_fts_query(query, model=models.Artist) else: query_obj = utils.get_query(query, search_fields) qs = ( models.Artist.objects.all() .filter(query_obj) .with_albums() .prefetch_related("channel__actor") .select_related("attributed_to") ) return common_utils.order_for_search(qs, "name")[: self.max_results]
def get_tags(self, query): search_fields = ["name__unaccent"] query_obj = utils.get_query(query, search_fields) qs = Tag.objects.all().filter(query_obj) return common_utils.order_for_search(qs, "name")[: self.max_results]