コード例 #1
0
    def do_search(self):
        query = self.search_query
        
        title_filter = Q(Title__icontains=query)
        series_name_filter = Q(AlbumId__SeriesId__Title__icontains=query)
        
        keywords_filter = Q()
        for word in query.split():
            keywords_filter |= Q(Keywords__icontains=lovins.remove_ending(word))
            
        available_episodes = self.caching.get_available_episodes()
        episodes = available_episodes.filter(title_filter |
                                             keywords_filter |
                                             series_name_filter)
        episodes_by_title = episodes.filter(title_filter)
        episodes_by_keywords = episodes.filter(keywords_filter)\
                                       .exclude(title_filter)
        episodes_by_series = episodes.filter(series_name_filter)\
                                     .exclude(title_filter | keywords_filter)\
                                     .order_by('AlbumId')

#        available_albums = AlbumUtils.get_available_albums()
#        albums_by_series = available_albums.filter(SeriesId__Title__icontains=query)
#        trailers_by_series = [album.TrailerId for album in albums_by_series]

        return [episode for episode in chain(episodes_by_title,
                                             episodes_by_keywords,
                                             episodes_by_series)]
コード例 #2
0
    def clean_query(self):
        query = self.params.get('query', None)
        if not query:
            raise ParameterExpected(parameter='query')

        self.search_query = lovins.remove_ending(query)