Merge branch 'fix_track_no' into develop

This commit is contained in:
Stein Magnus Jodal 2013-11-02 21:55:12 +01:00
commit 88933fa96d
2 changed files with 21 additions and 11 deletions

View File

@ -21,6 +21,12 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
self._tag_cache_file = self.backend.config['local']['tag_cache_file']
self.refresh()
def _convert_to_int(self, string):
try:
return int(string)
except ValueError:
return object()
def refresh(self, uri=None):
logger.debug(
'Loading local tracks from %s using %s',
@ -61,7 +67,7 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
# FIXME this is bound to be slow for large libraries
for value in values:
if field == 'track_no':
q = value
q = self._convert_to_int(value)
else:
q = value.strip()
@ -81,7 +87,6 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
album_filter(t) or
artist_filter(t) or
albumartist_filter(t) or
track_no_filter(t) or
date_filter(t))
if field == 'uri':
@ -119,7 +124,7 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
# FIXME this is bound to be slow for large libraries
for value in values:
if field == 'track_no':
q = value
q = self._convert_to_int(value)
else:
q = value.strip().lower()
@ -140,7 +145,6 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
album_filter(t) or
artist_filter(t) or
albumartist_filter(t) or
track_no_filter(t) or
date_filter(t))
if field == 'uri':

View File

@ -114,7 +114,10 @@ class LocalLibraryProviderTest(unittest.TestCase):
result = self.library.find_exact(date=['1990'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.find_exact(track_no=[9])
result = self.library.find_exact(track_no=['9'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.find_exact(track_no=['no_match'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.find_exact(uri=['fake uri'])
@ -167,10 +170,10 @@ class LocalLibraryProviderTest(unittest.TestCase):
self.assertEqual(list(result[0].tracks), [self.tracks[2]])
def test_find_exact_track_no(self):
result = self.library.find_exact(track_no=[1])
result = self.library.find_exact(track_no=['1'])
self.assertEqual(list(result[0].tracks), self.tracks[:1])
result = self.library.find_exact(track_no=[2])
result = self.library.find_exact(track_no=['2'])
self.assertEqual(list(result[0].tracks), self.tracks[1:2])
def test_find_exact_date(self):
@ -228,7 +231,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
test = lambda: self.library.find_exact(album=[''])
self.assertRaises(LookupError, test)
test = lambda: self.library.find_exact(track_no=[])
test = lambda: self.library.find_exact(track_no=[''])
self.assertRaises(LookupError, test)
test = lambda: self.library.find_exact(date=[''])
@ -247,7 +250,10 @@ class LocalLibraryProviderTest(unittest.TestCase):
result = self.library.search(album=['unknown artist'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.search(track_no=[9])
result = self.library.search(track_no=['9'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.search(track_no=['no_match'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.search(date=['unknown date'])
@ -314,10 +320,10 @@ class LocalLibraryProviderTest(unittest.TestCase):
self.assertEqual(list(result[0].tracks), self.tracks[1:2])
def test_search_track_no(self):
result = self.library.search(track_no=[1])
result = self.library.search(track_no=['1'])
self.assertEqual(list(result[0].tracks), self.tracks[:1])
result = self.library.search(track_no=[2])
result = self.library.search(track_no=['2'])
self.assertEqual(list(result[0].tracks), self.tracks[1:2])
def test_search_any(self):