1
0
mirror of https://github.com/django/django.git synced 2025-07-04 09:49:12 +00:00

newforms-admin: Merged from trunk up to [7941].

git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7944 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Brian Rosner 2008-07-17 20:12:21 +00:00
parent 1eed9b076c
commit 9188013889
4 changed files with 41 additions and 23 deletions

View File

@ -280,11 +280,10 @@ class QuerySet(object):
Performs a SELECT COUNT() and returns the number of records as an Performs a SELECT COUNT() and returns the number of records as an
integer. integer.
If the QuerySet is already cached (i.e. self._result_cache is set) this If the QuerySet is already fully cached this simply returns the length
simply returns the length of the cached results set to avoid multiple of the cached results set to avoid multiple SELECT COUNT(*) calls.
SELECT COUNT(*) calls.
""" """
if self._result_cache is not None: if self._result_cache is not None and not self._iter:
return len(self._result_cache) return len(self._result_cache)
return self.query.get_count() return self.query.get_count()

View File

@ -74,7 +74,10 @@ def teardown_test_environment():
def _set_autocommit(connection): def _set_autocommit(connection):
"Make sure a connection is in autocommit mode." "Make sure a connection is in autocommit mode."
if hasattr(connection.connection, "autocommit"): if hasattr(connection.connection, "autocommit"):
connection.connection.autocommit(True) if callable(connection.connection.autocommit):
connection.connection.autocommit(True)
else:
connection.connection.autocommit = True
elif hasattr(connection.connection, "set_isolation_level"): elif hasattr(connection.connection, "set_isolation_level"):
connection.connection.set_isolation_level(0) connection.connection.set_isolation_level(0)

View File

@ -108,7 +108,7 @@ class AdminScriptTestCase(unittest.TestCase):
self.assertEquals(len(stream), 0, "Stream should be empty: actually contains '%s'" % stream) self.assertEquals(len(stream), 0, "Stream should be empty: actually contains '%s'" % stream)
def assertOutput(self, stream, msg): def assertOutput(self, stream, msg):
"Utility assertion: assert that the given message exists in the output" "Utility assertion: assert that the given message exists in the output"
self.assertTrue(msg in stream, "'%s' does not match actual output text '%s'" % (msg, stream)) self.failUnless(msg in stream, "'%s' does not match actual output text '%s'" % (msg, stream))
########################################################################## ##########################################################################
# DJANGO ADMIN TESTS # DJANGO ADMIN TESTS

View File

@ -4,6 +4,7 @@ Various complex queries that have been problematic in the past.
import datetime import datetime
import pickle import pickle
import sys
from django.db import models from django.db import models
from django.db.models.query import Q, ITER_CHUNK_SIZE from django.db.models.query import Q, ITER_CHUNK_SIZE
@ -483,23 +484,6 @@ Bug #2076
>>> Cover.objects.all() >>> Cover.objects.all()
[<Cover: first>, <Cover: second>] [<Cover: first>, <Cover: second>]
# If you're not careful, it's possible to introduce infinite loops via default
# ordering on foreign keys in a cycle. We detect that.
>>> LoopX.objects.all()
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
>>> LoopZ.objects.all()
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
# ... but you can still order in a non-recursive fashion amongst linked fields
# (the previous test failed because the default ordering was recursive).
>>> LoopX.objects.all().order_by('y__x__y__x__id')
[]
# If the remote model does not have a default ordering, we order by its 'id' # If the remote model does not have a default ordering, we order by its 'id'
# field. # field.
>>> Item.objects.order_by('creator', 'name') >>> Item.objects.order_by('creator', 'name')
@ -830,5 +814,37 @@ another cursor.
... obj.save() ... obj.save()
... if i > 10: break ... if i > 10: break
Bug #7759 -- count should work with a partially read result set.
>>> count = Number.objects.count()
>>> qs = Number.objects.all()
>>> for obj in qs:
... qs.count() == count
... break
True
"""} """}
# In Python 2.3, exceptions raised in __len__ are swallowed (Python issue
# 1242657), so these cases return an empty list, rather than raising an
# exception. Not a lot we can do about that, unfortunately, due to the way
# Python handles list() calls internally. Thus, we skip the tests for Python
# 2.3.
if sys.version_info >= (2, 4):
__test__["API_TESTS"] += """
# If you're not careful, it's possible to introduce infinite loops via default
# ordering on foreign keys in a cycle. We detect that.
>>> LoopX.objects.all()
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
>>> LoopZ.objects.all()
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
# ... but you can still order in a non-recursive fashion amongst linked fields
# (the previous test failed because the default ordering was recursive).
>>> LoopX.objects.all().order_by('y__x__y__x__id')
[]
"""