diff options
author | Pedro Algarvio <pedro@algarvio.me> | 2011-05-18 03:56:17 +0100 |
---|---|---|
committer | Pedro Algarvio <pedro@algarvio.me> | 2011-05-18 03:56:17 +0100 |
commit | 9b812a4eec6205b98d9d5c12c14f82611832217a (patch) | |
tree | c41cbe0ec363e23eddf41a8f9984e14fd5b5e75c /deluge/error.py | |
parent | e3831877965570dd0e808ac6bd462dcaa4171643 (diff) | |
download | deluge-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.py | 40 |
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 |