From f70c9985c20681a00e63457c2c11b30ab9235d33 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Thu, 1 Jul 2010 01:57:12 +0000 Subject: [PATCH] [soc2010/query-refactor] Remove some nastiness from db_type() git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/query-refactor@13409 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/mongodb/base.py | 1 - django/contrib/mongodb/creation.py | 3 +++ django/db/backends/creation.py | 9 +++++++++ django/db/models/fields/__init__.py | 9 +-------- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/django/contrib/mongodb/base.py b/django/contrib/mongodb/base.py index c98562912c..7bb6491585 100644 --- a/django/contrib/mongodb/base.py +++ b/django/contrib/mongodb/base.py @@ -9,7 +9,6 @@ from django.utils.importlib import import_module class DatabaseFeatures(object): interprets_empty_strings_as_nulls = False - typed_columns = False sql_nulls = False diff --git a/django/contrib/mongodb/creation.py b/django/contrib/mongodb/creation.py index ed4a26316b..0e0a799712 100644 --- a/django/contrib/mongodb/creation.py +++ b/django/contrib/mongodb/creation.py @@ -5,6 +5,9 @@ class DatabaseCreation(object): def __init__(self, connection): self.connection = connection + def db_type(self, field): + return None + def create_test_db(self, verbosity, autoclobber): if self.connection.settings_dict['TEST_NAME']: test_database_name = self.connection.settings_dict['TEST_NAME'] diff --git a/django/db/backends/creation.py b/django/db/backends/creation.py index 492ac1e3e9..999d1cb5fe 100644 --- a/django/db/backends/creation.py +++ b/django/db/backends/creation.py @@ -3,6 +3,8 @@ import time from django.conf import settings from django.core.management import call_command +from django.utils.datastructures import DictWrapper + # The prefix to put on the default database name when creating # the test database. @@ -26,6 +28,13 @@ class BaseDatabaseCreation(object): shorten identifying names. """ return '%x' % (abs(hash(args)) % 4294967296L) # 2**32 + + def db_type(self, field): + data = DictWrapper(field.__dict__, self.connection.ops.quote_name, "qn_") + try: + return self.connection.creation.data_types[field.get_internal_type()] % data + except KeyError: + return None def sql_create_model(self, model, style, known_models=set()): """ diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index d6da57b467..f95efd0ce3 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -13,7 +13,6 @@ from django.db.models.query_utils import QueryWrapper from django.conf import settings from django import forms from django.core import exceptions, validators -from django.utils.datastructures import DictWrapper from django.utils.functional import curry from django.utils.text import capfirst from django.utils.translation import ugettext_lazy as _ @@ -215,13 +214,7 @@ class Field(object): # mapped to one of the built-in Django field types. In this case, you # can implement db_type() instead of get_internal_type() to specify # exactly which wacky database column type you want to use. - if not getattr(connection.features, "typed_columns", True): - return None - data = DictWrapper(self.__dict__, connection.ops.quote_name, "qn_") - try: - return connection.creation.data_types[self.get_internal_type()] % data - except KeyError: - return None + return connection.creation.db_type(self) def unique(self): return self._unique or self.primary_key