summaryrefslogtreecommitdiff
path: root/django/core
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2007-02-26 20:17:26 +0000
committerAdrian Holovaty <adrian@holovaty.com>2007-02-26 20:17:26 +0000
commit6df023007781e96fa1cfa8dfce0040cc9d7da871 (patch)
treea314d41c8e3a32fa030f1e7e63efb437579cf07f /django/core
parenta9fafd521f13c62eec78c27414262deda62993d3 (diff)
newforms-admin: Merged to [4616]
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@4617 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/core')
-rw-r--r--django/core/management.py23
-rw-r--r--django/core/serializers/python.py15
-rw-r--r--django/core/serializers/xml_serializer.py16
-rw-r--r--django/core/urlresolvers.py4
4 files changed, 27 insertions, 31 deletions
diff --git a/django/core/management.py b/django/core/management.py
index 3ec25889bf..315123048e 100644
--- a/django/core/management.py
+++ b/django/core/management.py
@@ -167,7 +167,8 @@ def _get_sql_model_create(model, known_models=set()):
if f.rel.to in known_models:
field_output.append(style.SQL_KEYWORD('REFERENCES') + ' ' + \
style.SQL_TABLE(backend.quote_name(f.rel.to._meta.db_table)) + ' (' + \
- style.SQL_FIELD(backend.quote_name(f.rel.to._meta.get_field(f.rel.field_name).column)) + ')'
+ style.SQL_FIELD(backend.quote_name(f.rel.to._meta.get_field(f.rel.field_name).column)) + ')' +
+ backend.get_deferrable_sql()
)
else:
# We haven't yet created the table to which this field
@@ -210,9 +211,10 @@ def _get_sql_for_pending_references(model, pending_references):
# For MySQL, r_name must be unique in the first 64 characters.
# So we are careful with character usage here.
r_name = '%s_refs_%s_%x' % (r_col, col, abs(hash((r_table, table))))
- final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s);' % \
+ final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' % \
(backend.quote_name(r_table), r_name,
- backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col)))
+ backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col),
+ backend.get_deferrable_sql()))
del pending_references[model]
return final_output
@@ -232,18 +234,20 @@ def _get_many_to_many_sql_for_model(model):
(style.SQL_FIELD(backend.quote_name('id')),
style.SQL_COLTYPE(data_types['AutoField']),
style.SQL_KEYWORD('NOT NULL PRIMARY KEY')))
- table_output.append(' %s %s %s %s (%s),' % \
+ table_output.append(' %s %s %s %s (%s)%s,' % \
(style.SQL_FIELD(backend.quote_name(f.m2m_column_name())),
style.SQL_COLTYPE(data_types[get_rel_data_type(opts.pk)] % opts.pk.__dict__),
style.SQL_KEYWORD('NOT NULL REFERENCES'),
style.SQL_TABLE(backend.quote_name(opts.db_table)),
- style.SQL_FIELD(backend.quote_name(opts.pk.column))))
- table_output.append(' %s %s %s %s (%s),' % \
+ style.SQL_FIELD(backend.quote_name(opts.pk.column)),
+ backend.get_deferrable_sql()))
+ table_output.append(' %s %s %s %s (%s)%s,' % \
(style.SQL_FIELD(backend.quote_name(f.m2m_reverse_name())),
style.SQL_COLTYPE(data_types[get_rel_data_type(f.rel.to._meta.pk)] % f.rel.to._meta.pk.__dict__),
style.SQL_KEYWORD('NOT NULL REFERENCES'),
style.SQL_TABLE(backend.quote_name(f.rel.to._meta.db_table)),
- style.SQL_FIELD(backend.quote_name(f.rel.to._meta.pk.column))))
+ style.SQL_FIELD(backend.quote_name(f.rel.to._meta.pk.column)),
+ backend.get_deferrable_sql()))
table_output.append(' %s (%s, %s)' % \
(style.SQL_KEYWORD('UNIQUE'),
style.SQL_FIELD(backend.quote_name(f.m2m_column_name())),
@@ -1243,7 +1247,10 @@ def test(app_labels, verbosity=1):
test_module = __import__(test_module_name, {}, {}, test_path[-1])
test_runner = getattr(test_module, test_path[-1])
- test_runner(app_list, verbosity)
+ failures = test_runner(app_list, verbosity)
+ if failures:
+ sys.exit(failures)
+
test.help_doc = 'Runs the test suite for the specified applications, or the entire site if no apps are specified'
test.args = '[--verbosity] ' + APP_ARGS
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index 1e1e6f4bec..a9baa01d5a 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -67,20 +67,19 @@ def Deserializer(object_list, **options):
field = Model._meta.get_field(field_name)
- # Handle M2M relations (with in_bulk() for performance)
+ # Handle M2M relations
if field.rel and isinstance(field.rel, models.ManyToManyRel):
pks = []
for pk in field_value:
if isinstance(pk, unicode):
- pk = pk.encode(options.get("encoding", settings.DEFAULT_CHARSET))
- m2m_data[field.name] = field.rel.to._default_manager.in_bulk(field_value).values()
+ pks.append(pk.encode(options.get("encoding", settings.DEFAULT_CHARSET)))
+ else:
+ pks.append(pk)
+ m2m_data[field.name] = pks
# Handle FK fields
- elif field.rel and isinstance(field.rel, models.ManyToOneRel) and field_value is not None:
- try:
- data[field.name] = field.rel.to._default_manager.get(pk=field_value)
- except field.rel.to.DoesNotExist:
- data[field.name] = None
+ elif field.rel and isinstance(field.rel, models.ManyToOneRel):
+ data[field.attname] = field_value
# Handle all other fields
else:
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index 512b8c6176..8fa7bbfac9 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -150,7 +150,7 @@ class Deserializer(base.Deserializer):
if field.rel and isinstance(field.rel, models.ManyToManyRel):
m2m_data[field.name] = self._handle_m2m_field_node(field_node)
elif field.rel and isinstance(field.rel, models.ManyToOneRel):
- data[field.name] = self._handle_fk_field_node(field_node)
+ data[field.attname] = self._handle_fk_field_node(field_node)
else:
value = field.to_python(getInnerText(field_node).strip().encode(self.encoding))
data[field.name] = value
@@ -162,27 +162,17 @@ class Deserializer(base.Deserializer):
"""
Handle a <field> node for a ForeignKey
"""
- # Try to set the foreign key by looking up the foreign related object.
- # If it doesn't exist, set the field to None (which might trigger
- # validation error, but that's expected).
- RelatedModel = self._get_model_from_node(node, "to")
# Check if there is a child node named 'None', returning None if so.
if len(node.childNodes) == 1 and node.childNodes[0].nodeName == 'None':
return None
else:
- return RelatedModel.objects.get(pk=getInnerText(node).strip().encode(self.encoding))
+ return getInnerText(node).strip().encode(self.encoding)
def _handle_m2m_field_node(self, node):
"""
Handle a <field> node for a ManyToManyField
"""
- # Load the related model
- RelatedModel = self._get_model_from_node(node, "to")
-
- # Look up all the related objects. Using the in_bulk() lookup ensures
- # that missing related objects don't cause an exception
- related_ids = [c.getAttribute("pk").encode(self.encoding) for c in node.getElementsByTagName("object")]
- return RelatedModel._default_manager.in_bulk(related_ids).values()
+ return [c.getAttribute("pk").encode(self.encoding) for c in node.getElementsByTagName("object")]
def _get_model_from_node(self, node, attr):
"""
diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index 93c9c30cca..3f1004c4fb 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -16,7 +16,7 @@ class Resolver404(Http404):
class NoReverseMatch(Exception):
# Don't make this raise an error when used in a template.
- silent_variable_failure = True
+ silent_variable_failure = True
def get_mod_func(callback):
# Converts 'django.views.news.stories.story_detail' to
@@ -110,7 +110,7 @@ class RegexURLPattern(object):
kwargs = match.groupdict()
if kwargs:
args = ()
- if not kwargs:
+ else:
args = match.groups()
# In both cases, pass any extra_kwargs as **kwargs.
kwargs.update(self.default_args)