diff --git a/deluge/plugins/Execute/deluge/plugins/execute/core.py b/deluge/plugins/Execute/deluge/plugins/execute/core.py index ebd6447c5..928d7b248 100644 --- a/deluge/plugins/Execute/deluge/plugins/execute/core.py +++ b/deluge/plugins/Execute/deluge/plugins/execute/core.py @@ -110,6 +110,14 @@ class Core(CorePluginBase): else: save_path = info["save_path"] + # getProcessOutputAndValue requires args to be str + if isinstance(torrent_name, unicode): + torrent_id = torrent_id.encode("utf-8", "ignore") + if isinstance(torrent_name, unicode): + torrent_name = torrent_name.encode("utf-8", "ignore") + if isinstance(save_path, unicode): + save_path = save_path.encode("utf-8", "ignore") + log.debug("[execute] Running commands for %s", event) def log_error(result, command): diff --git a/deluge/tests/google.ico b/deluge/tests/google.ico index ee7c943ab..f594697d2 100644 Binary files a/deluge/tests/google.ico and b/deluge/tests/google.ico differ diff --git a/deluge/tests/test_httpdownloader.py b/deluge/tests/test_httpdownloader.py index 6e9c677a0..a4a53fc13 100644 --- a/deluge/tests/test_httpdownloader.py +++ b/deluge/tests/test_httpdownloader.py @@ -5,7 +5,11 @@ from twisted.trial import unittest from twisted.internet import reactor from twisted.python.failure import Failure from twisted.web.http import FORBIDDEN, NOT_MODIFIED -from twisted.web.resource import Resource, ForbiddenResource +try: + from twisted.web.resource import Resource, ForbiddenResource +except ImportError: + # twisted 8 + from twisted.web.error import Resource, ForbiddenResource from twisted.web.server import Site from deluge.httpdownloader import download_file diff --git a/deluge/ui/gtkui/gtkui.py b/deluge/ui/gtkui/gtkui.py index 5726eea50..53072e2ac 100644 --- a/deluge/ui/gtkui/gtkui.py +++ b/deluge/ui/gtkui/gtkui.py @@ -405,7 +405,11 @@ Please see the details below for more information."), details=traceback.format_e if self.config["show_connection_manager_on_start"]: # XXX: We need to call a simulate() here, but this could be a bug in twisted - reactor.simulate() + try: + reactor._simulate() + except AttributeError: + # twisted < 12 + reactor.simulate() self.connectionmanager.show() diff --git a/deluge/ui/tracker_icons.py b/deluge/ui/tracker_icons.py index 008783696..c475381f5 100644 --- a/deluge/ui/tracker_icons.py +++ b/deluge/ui/tracker_icons.py @@ -40,7 +40,12 @@ from urlparse import urljoin, urlparse from tempfile import mkstemp from twisted.internet import defer, threads -from twisted.web import error +from twisted.web.error import PageRedirect +try: + from twisted.web.resource import NoResource, ForbiddenResource +except ImportError: + # twisted 8 + from twisted.web.error import NoResource, ForbiddenResource from deluge.component import Component from deluge.configmanager import get_config_dir @@ -238,7 +243,7 @@ class TrackerIcons(Component): error_msg = f.getErrorMessage() log.debug("Error downloading page: %s", error_msg) d = f - if f.check(error.PageRedirect): + if f.check(PageRedirect): # Handle redirect errors location = urljoin(self.host_to_url(host), error_msg.split(" to ")[1]) self.redirects[host] = url_to_host(location) @@ -378,14 +383,14 @@ class TrackerIcons(Component): error_msg = f.getErrorMessage() log.debug("Error downloading icon: %s", error_msg) d = f - if f.check(error.PageRedirect): + if f.check(PageRedirect): # Handle redirect errors location = urljoin(self.host_to_url(host), error_msg.split(" to ")[1]) d = self.download_icon([(location, extension_to_mimetype(location.rpartition('.')[2]))] + icons, host) if not icons: d.addCallbacks(self.on_download_icon_complete, self.on_download_icon_fail, callbackArgs=(host,), errbackArgs=(host,)) - elif f.check(error.NoResource, error.ForbiddenResource) and icons: + elif f.check(NoResource, ForbiddenResource) and icons: d = self.download_icon(icons, host) elif f.check(NoIconsError, HTMLParseError): # No icons, try favicon.ico as an act of desperation diff --git a/setup.py b/setup.py index cb21a809b..a55567c76 100755 --- a/setup.py +++ b/setup.py @@ -70,6 +70,7 @@ _extra_compile_args = [ "-DTORRENT_USE_OPENSSL=1", "-DBOOST_FILESYSTEM_VERSION=2", "-DBOOST_ASIO_ENABLE_CANCELIO", + "-DBOOST_ASIO_SEPARATE_COMPILATION", "-O2", ]