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:
parent
1eed9b076c
commit
9188013889
@ -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()
|
||||||
|
@ -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"):
|
||||||
|
if callable(connection.connection.autocommit):
|
||||||
connection.connection.autocommit(True)
|
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)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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')
|
||||||
|
[]
|
||||||
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user