From 319c1fc1e350c66b470907e7b6134149de69bfe4 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Mon, 2 Mar 2015 23:39:06 +0100 Subject: [PATCH] local: Readd support for search without limit for get_distinct support --- mopidy/local/json.py | 9 +++++---- mopidy/local/search.py | 15 +++++++++++---- tests/local/test_json.py | 2 -- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/mopidy/local/json.py b/mopidy/local/json.py index e27015f2..969049d6 100644 --- a/mopidy/local/json.py +++ b/mopidy/local/json.py @@ -182,10 +182,11 @@ class JsonLibrary(local.Library): else: return set() - result = set() - for track in search.search(self._tracks.values(), query).tracks: - result.update(distinct(track)) - return result + distinct_result = set() + search_result = search.search(self._tracks.values(), query, limit=None) + for track in search_result.tracks: + distinct_result.update(distinct(track)) + return distinct_result def search(self, query=None, limit=100, offset=0, uris=None, exact=False): tracks = self._tracks.values() diff --git a/mopidy/local/search.py b/mopidy/local/search.py index 1f82366f..9d6edea7 100644 --- a/mopidy/local/search.py +++ b/mopidy/local/search.py @@ -106,9 +106,12 @@ def find_exact(tracks, query=None, limit=100, offset=0, uris=None): else: raise LookupError('Invalid lookup field: %s' % field) + if limit is None: + tracks = tracks[offset:] + else: + tracks = tracks[offset:offset + limit] # TODO: add local:search: - return SearchResult( - uri='local:search', tracks=tracks[offset:offset + limit]) + return SearchResult(uri='local:search', tracks=tracks) def search(tracks, query=None, limit=100, offset=0, uris=None): @@ -217,9 +220,13 @@ def search(tracks, query=None, limit=100, offset=0, uris=None): tracks = filter(any_filter, tracks) else: raise LookupError('Invalid lookup field: %s' % field) + + if limit is None: + tracks = tracks[offset:] + else: + tracks = tracks[offset:offset + limit] # TODO: add local:search: - return SearchResult(uri='local:search', - tracks=tracks[offset:offset + limit]) + return SearchResult(uri='local:search', tracks=tracks) def _validate_query(query): diff --git a/tests/local/test_json.py b/tests/local/test_json.py index 6d57c4d0..520287ad 100644 --- a/tests/local/test_json.py +++ b/tests/local/test_json.py @@ -1,12 +1,10 @@ from __future__ import absolute_import, unicode_literals - import unittest from mopidy.local import json from mopidy.models import Ref, Track - from tests import path_to_data_dir