Fixed two bugs in 59a35208.

* StandardError doesn't exist any more under Python 3.
* Python 2.6 still allows `raise "foo"`.
This commit is contained in:
Aymeric Augustin 2013-02-27 19:24:23 +01:00
parent 59a3520875
commit 1b100d7bee
1 changed files with 7 additions and 2 deletions

View File

@ -14,7 +14,7 @@ from django.utils import six
DEFAULT_DB_ALIAS = 'default' DEFAULT_DB_ALIAS = 'default'
class Error(StandardError): class Error(Exception if six.PY3 else StandardError):
pass pass
@ -81,7 +81,12 @@ class DatabaseErrorWrapper(object):
): ):
db_exc_type = getattr(self.database, dj_exc_type.__name__) db_exc_type = getattr(self.database, dj_exc_type.__name__)
if issubclass(exc_type, db_exc_type): if issubclass(exc_type, db_exc_type):
dj_exc_value = dj_exc_type(*tuple(exc_value.args)) # Under Python 2.6, exc_value can still be a string.
try:
args = tuple(exc_value.args)
except AttributeError:
args = (exc_value,)
dj_exc_value = dj_exc_type(*args)
if six.PY3: if six.PY3:
dj_exc_value.__cause__ = exc_value dj_exc_value.__cause__ = exc_value
six.reraise(dj_exc_type, dj_exc_value, traceback) six.reraise(dj_exc_type, dj_exc_value, traceback)