Fix adding torrents and setting proper state on load.

This commit is contained in:
Andrew Resch 2008-03-15 06:16:06 +00:00
parent 723fd76d84
commit b3f9785b20
2 changed files with 20 additions and 15 deletions

View File

@ -48,6 +48,7 @@ class Torrent:
"""
def __init__(self, filename, handle, compact, save_path, total_uploaded=0,
trackers=None):
log.debug("Creating torrent object %s", str(handle.info_hash()))
# Get the core config
self.config = ConfigManager("core.conf")
@ -67,21 +68,18 @@ class Torrent:
self.compact = compact
# Where the torrent is being saved to
self.save_path = save_path
# The state of the torrent
self.state = "Paused"
# Holds status info so that we don't need to keep getting it from lt
self.status = self.handle.status()
self.torrent_info = self.handle.torrent_info()
# Set the initial state
if self.status.state == deluge.common.LT_TORRENT_STATE["Allocating"]:
self.set_state("Allocating")
elif self.status.state == deluge.common.LT_TORRENT_STATE["Checking"]:
self.set_state("Checking")
self.state = "Checking"
if self.handle.is_seed():
self.state = "Seeding"
else:
self.set_state("Paused")
self.state = "Downloading"
# Various torrent options
self.max_connections = -1
self.max_upload_slots = -1
@ -110,6 +108,8 @@ class Torrent:
# Set the default file priorities to normal
self.file_priorities = [1]* len(self.files)
log.debug("Torrent object created.")
def set_tracker_status(self, status):
"""Sets the tracker status"""
self.tracker_status = status

View File

@ -108,7 +108,7 @@ class TorrentManager(component.Component):
# Create the torrents dict { torrent_id: Torrent }
self.torrents = {}
# List of torrents to note set state 'Paused' on lt alert
# List of torrents to not set state 'Paused' on lt alert
self.not_state_paused = []
# Register set functions
@ -251,8 +251,10 @@ class TorrentManager(component.Component):
paused=True)
except RuntimeError, e:
log.warning("Error adding torrent: %s", e)
log.debug("after torrent add")
if not handle or not handle.is_valid():
log.debug("torrent handle is invalid!")
# The torrent was not added to the session
component.resume("AlertManager")
return None
@ -260,12 +262,12 @@ class TorrentManager(component.Component):
# Create a Torrent object
torrent = Torrent(filename, handle, options["compact_allocation"],
options["download_location"], total_uploaded, trackers)
component.resume("AlertManager")
log.debug("torrent: %s", torrent)
# Add the torrent object to the dictionary
self.torrents[torrent.torrent_id] = torrent
log.debug("self.torrents: %s", self.torrents)
component.resume("AlertManager")
# Add the torrent to the queue
if queue == -1 and self.config["queue_new_to_top"]:
self.queue.insert(0, torrent.torrent_id)
@ -292,8 +294,10 @@ class TorrentManager(component.Component):
torrent.state = "Queued"
elif state == "Paused":
torrent.state = "Paused"
elif state == None and not options["add_paused"]:
if state == None and not options["add_paused"]:
torrent.handle.resume()
if state == None and options["add_paused"]:
torrent.state = "Paused"
# Save the torrent file
torrent.save_torrent_file(filedump)
@ -617,6 +621,7 @@ class TorrentManager(component.Component):
# Get the torrent_id
torrent_id = str(alert.handle.info_hash())
# Set the torrent state
log.debug("self.torrents: %s", self.torrents)
if not self.torrents[torrent_id].handle.is_paused():
if self.torrents[torrent_id].handle.is_seed():
self.torrents[torrent_id].set_state("Seeding")