Refs #27859 -- Added DatabaseWrapper.display_name.

Thanks Tim Graham for the review.
This commit is contained in:
Mariusz Felisiak 2017-05-23 15:09:35 +02:00 committed by Tim Graham
parent 5dc6f77423
commit b3eb6eaf1a
7 changed files with 13 additions and 0 deletions

View File

@ -31,6 +31,7 @@ class BaseDatabaseWrapper:
data_type_check_constraints = {} data_type_check_constraints = {}
ops = None ops = None
vendor = 'unknown' vendor = 'unknown'
display_name = 'unknown'
SchemaEditorClass = None SchemaEditorClass = None
# Classes instantiated in __init__(). # Classes instantiated in __init__().
client_class = None client_class = None

View File

@ -103,6 +103,7 @@ class CursorWrapper:
class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
vendor = 'mysql' vendor = 'mysql'
display_name = 'MySQL'
# This dictionary maps Field objects to their associated MySQL column # This dictionary maps Field objects to their associated MySQL column
# types, as strings. Column-type strings can contain format strings; they'll # types, as strings. Column-type strings can contain format strings; they'll
# be interpolated against the values of Field.__dict__ before being output. # be interpolated against the values of Field.__dict__ before being output.

View File

@ -72,6 +72,7 @@ class _UninitializedOperatorsDescriptor:
class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
vendor = 'oracle' vendor = 'oracle'
display_name = 'Oracle'
# This dictionary maps Field objects to their associated Oracle column # This dictionary maps Field objects to their associated Oracle column
# types, as strings. Column-type strings can contain format strings; they'll # types, as strings. Column-type strings can contain format strings; they'll
# be interpolated against the values of Field.__dict__ before being output. # be interpolated against the values of Field.__dict__ before being output.

View File

@ -59,6 +59,7 @@ psycopg2.extensions.register_type(INETARRAY)
class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
vendor = 'postgresql' vendor = 'postgresql'
display_name = 'PostgreSQL'
# This dictionary maps Field objects to their associated PostgreSQL column # This dictionary maps Field objects to their associated PostgreSQL column
# types, as strings. Column-type strings can contain format strings; they'll # types, as strings. Column-type strings can contain format strings; they'll
# be interpolated against the values of Field.__dict__ before being output. # be interpolated against the values of Field.__dict__ before being output.

View File

@ -45,6 +45,7 @@ Database.register_adapter(decimal.Decimal, backend_utils.rev_typecast_decimal)
class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
vendor = 'sqlite' vendor = 'sqlite'
display_name = 'SQLite'
# SQLite doesn't actually support most of these types, but it "does the right # SQLite doesn't actually support most of these types, but it "does the right
# thing" given more verbose field definitions, so leave them as is so that # thing" given more verbose field definitions, so leave them as is so that
# schema inspection is more useful. # schema inspection is more useful.

View File

@ -258,6 +258,10 @@ Database backend API
``datetime_extract_sql()`` methods now return only the SQL to perform the ``datetime_extract_sql()`` methods now return only the SQL to perform the
operation instead of SQL and a list of parameters. operation instead of SQL and a list of parameters.
* Third-party database backends should add a ``DatabaseWrapper.display_name``
attribute with the name of the database that your backend works with. Django
may use it in various messages, such as in system checks.
Dropped support for Oracle 11.2 Dropped support for Oracle 11.2
------------------------------- -------------------------------

View File

@ -55,6 +55,10 @@ class DatabaseWrapperTests(SimpleTestCase):
instance_attr_value = getattr(conn, instance_attr_name) instance_attr_value = getattr(conn, instance_attr_name)
self.assertIsInstance(instance_attr_value, class_attr_value) self.assertIsInstance(instance_attr_value, class_attr_value)
def test_initialization_display_name(self):
self.assertEqual(BaseDatabaseWrapper.display_name, 'unknown')
self.assertNotEqual(connection.display_name, 'unknown')
class DummyBackendTest(SimpleTestCase): class DummyBackendTest(SimpleTestCase):