Beispiel #1
0
 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]
Beispiel #2
0
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'})
Beispiel #3
0
 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]
Beispiel #4
0
 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]