From 1b100d7beed757246df1da8417590a6f2aabc2bc Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Wed, 27 Feb 2013 19:24:23 +0100 Subject: [PATCH] Fixed two bugs in 59a35208. * StandardError doesn't exist any more under Python 3. * Python 2.6 still allows `raise "foo"`. --- django/db/utils.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/django/db/utils.py b/django/db/utils.py index c841e06f3e..0c98cc23fd 100644 --- a/django/db/utils.py +++ b/django/db/utils.py @@ -14,7 +14,7 @@ from django.utils import six DEFAULT_DB_ALIAS = 'default' -class Error(StandardError): +class Error(Exception if six.PY3 else StandardError): pass @@ -81,7 +81,12 @@ class DatabaseErrorWrapper(object): ): db_exc_type = getattr(self.database, dj_exc_type.__name__) 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: dj_exc_value.__cause__ = exc_value six.reraise(dj_exc_type, dj_exc_value, traceback)