From 0b60d604f27b2dffbde15252c5ff2ce13067f8c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= Date: Tue, 24 Oct 2006 11:23:03 +0200 Subject: [PATCH] Fix album loading. --- picard/browser/browser.py | 4 ++-- picard/tagger.py | 10 ++++------ picard/util/cachedws.py | 9 +++++---- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/picard/browser/browser.py b/picard/browser/browser.py index 06fb0212a..a1fa31434 100644 --- a/picard/browser/browser.py +++ b/picard/browser/browser.py @@ -93,8 +93,8 @@ class BrowserIntegration(QtCore.QThread): if action == "init": self.emit(QtCore.SIGNAL("init(int)"), args) elif action == "openalbum": - self.tagger.thread_assist.proxy_to_main(self.tagger.load_album, - (args["id"],)) + self.tagger.thread_assist.proxy_to_main( + self.tagger.load_album, args["id"]) else: self.log.warning("Unknown browser integration event %r", action) diff --git a/picard/tagger.py b/picard/tagger.py index 9c212341f..b52389661 100644 --- a/picard/tagger.py +++ b/picard/tagger.py @@ -480,12 +480,13 @@ class Tagger(QtGui.QApplication, ComponentManager, Component): if files: self.remove_files(files) - def load_album(self, id, refresh=False): + def load_album(self, id): """Load an album specified by MusicBrainz ID.""" album = self.get_album_by_id(id) if album: return album album = Album(id, _("[loading album information]"), None) + self.albums.append(album) self.connect(album, QtCore.SIGNAL("track_updated"), self, QtCore.SIGNAL("track_updated")) self.emit(QtCore.SIGNAL("album_added"), album) self.thread_assist.spawn(self.__load_album_thread, album) @@ -625,11 +626,8 @@ class Tagger(QtGui.QApplication, ComponentManager, Component): self.config.setting["proxy_server_port"]) kwargs['opener'] = urllib2.build_opener( urllib2.ProxyHandler({'http': http})) - if cached: - return CachedWebService(cache_dir=self.cache_dir, - **kwargs) - else: - return WebService(**kwargs) + return CachedWebService(cache_dir=self.cache_dir, force=not cached, + **kwargs) def lookup_cd(self): self.set_wait_cursor() diff --git a/picard/util/cachedws.py b/picard/util/cachedws.py index 5a8ac1dc4..0eb4674ec 100644 --- a/picard/util/cachedws.py +++ b/picard/util/cachedws.py @@ -25,9 +25,10 @@ from musicbrainz2.webservice import WebService class CachedWebService(WebService): """This class provides a cached wrapper around ``WebService``.""" - def __init__(self, cache_dir='.', **kwargs): + def __init__(self, cache_dir='.', force=False, **kwargs): """Constructor.""" WebService.__init__(self, **kwargs) + self.force = force self._cache_dir = cache_dir if not os.path.isdir(self._cache_dir): try: @@ -40,7 +41,7 @@ class CachedWebService(WebService): """Query the web service.""" url = self._makeUrl(entity, id_, include, filter, version) filename = self._make_cache_filename(url) - if not os.path.isfile(filename): + if self.force or not os.path.isfile(filename): stream = WebService.get(self, entity, id_, include, filter, version) try: outfile = open(filename, 'wb') @@ -58,7 +59,7 @@ class CachedWebService(WebService): def post(self, entity, id_, data, version='1'): url = self._makeUrl(entity, id_, version=version, type_=None) filename = self._make_cache_filename(url + data) - if not os.path.isfile(filename): + if self.force or not os.path.isfile(filename): stream = WebService.post(self, entity, id_, data, version) try: outfile = open(filename, 'wb') @@ -79,7 +80,7 @@ class CachedWebService(WebService): def get_from_url(self, url): filename = self._make_cache_filename(url) - if not os.path.isfile(filename): + if self.force or not os.path.isfile(filename): stream = self._opener.open(url) try: outfile = open(filename, 'wb')