diff --git a/deluge/tests/test_web_api.py b/deluge/tests/test_web_api.py index 8dfd3c8c5..6435d1410 100644 --- a/deluge/tests/test_web_api.py +++ b/deluge/tests/test_web_api.py @@ -189,7 +189,7 @@ class WebAPITestCase(BaseTestCase, DaemonBase): yield self.deluge_web.web_api.connect(self.host_id) filename = os.path.join(os.path.dirname(__file__), "test.torrent") torrents = [{"path": filename, "options": {"download_location": "/home/deluge/"}}] - self.deluge_web.web_api.add_torrents(torrents) + yield self.deluge_web.web_api.add_torrents(torrents) ret = yield self.deluge_web.web_api.get_torrent_files("ab570cdd5a17ea1b61e970bb72047de141bce173") self.assertEquals(ret["type"], "dir") self.assertEquals(ret["contents"], {u'azcvsupdater_2.6.2.jar': diff --git a/deluge/ui/gtkui/torrentview.py b/deluge/ui/gtkui/torrentview.py index f4f1ac7f4..e9d234c20 100644 --- a/deluge/ui/gtkui/torrentview.py +++ b/deluge/ui/gtkui/torrentview.py @@ -323,13 +323,6 @@ class TorrentView(ListView, component.Component): self.treeview.connect("key-press-event", self.on_key_press_event) self.treeview.connect("columns-changed", self.on_columns_changed_event) - client.register_event_handler("TorrentStateChangedEvent", self.on_torrentstatechanged_event) - client.register_event_handler("TorrentAddedEvent", self.on_torrentadded_event) - client.register_event_handler("TorrentRemovedEvent", self.on_torrentremoved_event) - client.register_event_handler("SessionPausedEvent", self.on_sessionpaused_event) - client.register_event_handler("SessionResumedEvent", self.on_sessionresumed_event) - client.register_event_handler("TorrentQueueChangedEvent", self.on_torrentqueuechanged_event) - self.search_box = SearchBox(self) self.permanent_status_keys = ["owner"] self.columns_to_update = [] @@ -348,6 +341,13 @@ class TorrentView(ListView, component.Component): component.get("SessionProxy").get_torrents_status( {}, status_fields).addCallback(self._on_session_state) + client.register_event_handler("TorrentStateChangedEvent", self.on_torrentstatechanged_event) + client.register_event_handler("TorrentAddedEvent", self.on_torrentadded_event) + client.register_event_handler("TorrentRemovedEvent", self.on_torrentremoved_event) + client.register_event_handler("SessionPausedEvent", self.on_sessionpaused_event) + client.register_event_handler("SessionResumedEvent", self.on_sessionresumed_event) + client.register_event_handler("TorrentQueueChangedEvent", self.on_torrentqueuechanged_event) + def _on_session_state(self, state): self.add_rows(state) self.got_state = True @@ -360,6 +360,13 @@ class TorrentView(ListView, component.Component): def stop(self): """Stops the torrentview""" # We need to clear the liststore + client.deregister_event_handler("TorrentStateChangedEvent", self.on_torrentstatechanged_event) + client.deregister_event_handler("TorrentAddedEvent", self.on_torrentadded_event) + client.deregister_event_handler("TorrentRemovedEvent", self.on_torrentremoved_event) + client.deregister_event_handler("SessionPausedEvent", self.on_sessionpaused_event) + client.deregister_event_handler("SessionResumedEvent", self.on_sessionresumed_event) + client.deregister_event_handler("TorrentQueueChangedEvent", self.on_torrentqueuechanged_event) + if self.treeview.get_selection(): self.treeview.get_selection().unselect_all() self.liststore.clear() diff --git a/deluge/ui/web/json_api.py b/deluge/ui/web/json_api.py index 0a093896c..5951cbc55 100644 --- a/deluge/ui/web/json_api.py +++ b/deluge/ui/web/json_api.py @@ -691,18 +691,22 @@ class WebApi(JSONComponent): }]) """ + deferreds = [] + for torrent in torrents: if common.is_magnet(torrent["path"]): log.info("Adding torrent from magnet uri `%s` with options `%r`", torrent["path"], torrent["options"]) - client.core.add_torrent_magnet(torrent["path"], torrent["options"]) + d = client.core.add_torrent_magnet(torrent["path"], torrent["options"]) + deferreds.append(d) else: filename = os.path.basename(torrent["path"]) fdump = base64.encodestring(open(torrent["path"], "rb").read()) log.info("Adding torrent from file `%s` with options `%r`", filename, torrent["options"]) - client.core.add_torrent_file(filename, fdump, torrent["options"]) - return True + d = client.core.add_torrent_file(filename, fdump, torrent["options"]) + deferreds.append(d) + return DeferredList(deferreds, consumeErrors=False) @export def get_hosts(self):