def get_context_data(self, **kwargs): context = super(SearchView, self).get_context_data(**kwargs) keyword = self.kwargs['keyword'] try: artists = Artist.objects.filter(name__icontains=keyword).values( 'name', 'slug', 'text', 'picture') except Artist.DoesNotExist: artists = [] try: albums = Album.objects.filter(name__icontains=keyword).values( 'name', 'date', 'picture', 'slug') except Album.DoesNotExist: albums = [] try: songs = Song.objects.filter(title__icontains=keyword).values( 'title', 'filepath', 'slug', 'album__name', 'album__slug', 'artist__slug', 'artist__name', 'style__name', 'style__name', 'album__picture') except Song.DoesNotExist: songs = [] try: playlists = Playlist.objects.filter(name__icontains=keyword) except Playlist.DoesNotExist: playlists = [] remote_instances = RemoteInstance.objects.all() for remote_instance in remote_instances: api_client = ApiClient() search = api_client.search(keyword) try: artists = self.merge_dict(artists, search['artists']) except KeyError: pass try: songs = self.merge_dict(songs, search['songs']) except KeyError: pass try: albums = self.merge_dict(albums, search['albums']) except KeyError: pass context['artists'] = artists context['albums'] = albums context['songs'] = songs context['playlists'] = playlists context['modal_playlists'] = Playlist.objects.all() context['active'] = "search" return context