summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2010-07-01 01:57:12 +0000
committerAlex Gaynor <alex.gaynor@gmail.com>2010-07-01 01:57:12 +0000
commitf70c9985c20681a00e63457c2c11b30ab9235d33 (patch)
tree2420091a6012f17252dd2b9a8c3345f0470b5f2f
parent7dcb95ae9a241a896b6b55158d54b741897a1f43 (diff)
downloaddjango-f70c9985c20681a00e63457c2c11b30ab9235d33.tar.gz
[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
-rw-r--r--django/contrib/mongodb/base.py1
-rw-r--r--django/contrib/mongodb/creation.py3
-rw-r--r--django/db/backends/creation.py9
-rw-r--r--django/db/models/fields/__init__.py9
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