Fix [4491] which broke the oldstateupgrade

This commit is contained in:
Andrew Resch 2009-01-14 02:45:11 +00:00
parent e42910dbf8
commit f990fd1a9a
1 changed files with 29 additions and 28 deletions

View File

@ -76,29 +76,30 @@ class OldStateUpgrader:
log.debug("Unable to open 0.5 state file: %s", e) log.debug("Unable to open 0.5 state file: %s", e)
return return
# Check to see if we can upgrade this file
if type(state).__name__ == 'list': if type(state).__name__ == 'list':
log.debug("0.5 state file is too old to upgrade:") log.warning("0.5 state file is too old to upgrade")
return return
else:
new_state = deluge.core.torrentmanager.TorrentManagerState() new_state = deluge.core.torrentmanager.TorrentManagerState()
for ti, uid in state.torrents.items(): for ti, uid in state.torrents.items():
torrent_path = os.path.join(self.config["config_location"], "torrentfiles", ti.filename) torrent_path = os.path.join(self.config["config_location"], "torrentfiles", ti.filename)
try: try:
torrent_info = None torrent_info = None
log.debug("Attempting to create torrent_info from %s", torrent_path) log.debug("Attempting to create torrent_info from %s", torrent_path)
_file = open(torrent_path, "rb") _file = open(torrent_path, "rb")
torrent_info = lt.torrent_info(lt.bdecode(_file.read())) torrent_info = lt.torrent_info(lt.bdecode(_file.read()))
_file.close() _file.close()
except (IOError, RuntimeError), e: except (IOError, RuntimeError), e:
log.warning("Unable to open %s: %s", filepath, e) log.warning("Unable to open %s: %s", filepath, e)
# Copy the torrent file to the new location # Copy the torrent file to the new location
import shutil import shutil
shutil.copyfile(torrent_path, os.path.join(self.config["state_location"], str(torrent_info.info_hash()) + ".torrent")) shutil.copyfile(torrent_path, os.path.join(self.config["state_location"], str(torrent_info.info_hash()) + ".torrent"))
# Set the file prioritiy property if not already there # Set the file prioritiy property if not already there
if not hasattr(ti, "priorities"): if not hasattr(ti, "priorities"):
ti.priorities = [1] * torrent_info.num_files() ti.priorities = [1] * torrent_info.num_files()
# Create the new TorrentState object # Create the new TorrentState object
new_torrent = deluge.core.torrentmanager.TorrentState( new_torrent = deluge.core.torrentmanager.TorrentState(
@ -116,16 +117,16 @@ class OldStateUpgrader:
# Append the object to the state list # Append the object to the state list
new_state.torrents.append(new_torrent) new_state.torrents.append(new_torrent)
# Now we need to write out the new state file # Now we need to write out the new state file
try: try:
log.debug("Saving torrent state file.") log.debug("Saving torrent state file.")
state_file = open( state_file = open(
os.path.join(self.config["state_location"], "torrents.state"), "wb") os.path.join(self.config["state_location"], "torrents.state"), "wb")
cPickle.dump(new_state, state_file) cPickle.dump(new_state, state_file)
state_file.close() state_file.close()
except IOError, e: except IOError, e:
log.warning("Unable to save state file: %s", e) log.warning("Unable to save state file: %s", e)
return return
# Rename the persistent.state file # Rename the persistent.state file
try: try: