summaryrefslogtreecommitdiffstats
path: root/deluge/error.py
diff options
context:
space:
mode:
authorPedro Algarvio <pedro@algarvio.me>2011-05-18 03:56:17 +0100
committerPedro Algarvio <pedro@algarvio.me>2011-05-18 03:56:17 +0100
commit9b812a4eec6205b98d9d5c12c14f82611832217a (patch)
treec41cbe0ec363e23eddf41a8f9984e14fd5b5e75c /deluge/error.py
parente3831877965570dd0e808ac6bd462dcaa4171643 (diff)
downloaddeluge-9b812a4eec6205b98d9d5c12c14f82611832217a.tar.gz
deluge-9b812a4eec6205b98d9d5c12c14f82611832217a.tar.bz2
deluge-9b812a4eec6205b98d9d5c12c14f82611832217a.zip
Extend RPC Protocol.
While adding the multiuser auth related stuff, RPC_AUTH_EVENT was added, simply to not touch how RPC_ERROR was handled. It was created to allow recreating the exception on the client side. Instead of adding another rpc event type, extend RPC_ERROR to send the proper data to recreate the exception on the client side.
Diffstat (limited to 'deluge/error.py')
-rw-r--r--deluge/error.py40
1 files changed, 21 insertions, 19 deletions
diff --git a/deluge/error.py b/deluge/error.py
index 14579d88a..ea7c64671 100644
--- a/deluge/error.py
+++ b/deluge/error.py
@@ -36,7 +36,21 @@
class DelugeError(Exception):
- pass
+ def _get_message(self):
+ return self._message
+ def _set_message(self, message):
+ self._message = message
+ message = property(_get_message, _set_message)
+ del _get_message, _set_message
+
+ def __str__(self):
+ return self.message
+
+ def __new__(cls, *args, **kwargs):
+ inst = super(DelugeError, cls).__new__(cls, *args, **kwargs)
+ inst._args = args
+ inst._kwargs = kwargs
+ return inst
class NoCoreError(DelugeError):
pass
@@ -50,30 +64,18 @@ class InvalidTorrentError(DelugeError):
class InvalidPathError(DelugeError):
pass
-class _PassthroughError(DelugeError):
-
- def _get_message(self):
- return self._message
- def _set_message(self, message):
- self._message = message
- message = property(_get_message, _set_message)
- del _get_message, _set_message
-
- def __new__(cls, *args, **kwargs):
- inst = super(_PassthroughError, cls).__new__(cls, *args, **kwargs)
- inst._args = args
- inst._kwargs = kwargs
- return inst
+class _ClientSideRecreateError(DelugeError):
+ pass
-class IncompatibleClient(_PassthroughError):
+class IncompatibleClient(_ClientSideRecreateError):
def __init__(self, daemon_version):
self.daemon_version = daemon_version
self.message = _(
"Your deluge client is not compatible with the daemon. "
"Please upgrade your client to %(daemon_version)s"
- ) % {'daemon_version': self.daemon_version}
+ ) % dict(daemon_version=self.daemon_version)
-class NotAuthorizedError(_PassthroughError):
+class NotAuthorizedError(_ClientSideRecreateError):
def __init__(self, current_level, required_level):
self.message = _(
@@ -84,7 +86,7 @@ class NotAuthorizedError(_PassthroughError):
self.required_level = required_level
-class _UsernameBasedPasstroughError(_PassthroughError):
+class _UsernameBasedPasstroughError(_ClientSideRecreateError):
def _get_username(self):
return self._username