Fix album loading.

This commit is contained in:
Lukáš Lalinský
2006-10-24 11:23:03 +02:00
parent bf28ad777f
commit 0b60d604f2
3 changed files with 11 additions and 12 deletions

View File

@@ -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)

View File

@@ -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()

View File

@@ -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')