[1.8.x] Fixed many spelling mistakes in code, comments, and docs.
Partial backport of 93452a70e8
from master
This commit is contained in:
parent
2d321d2393
commit
751e5fcaf7
|
@ -16,7 +16,7 @@ def delete_selected(modeladmin, request, queryset):
|
||||||
"""
|
"""
|
||||||
Default action which deletes the selected objects.
|
Default action which deletes the selected objects.
|
||||||
|
|
||||||
This action first displays a confirmation page whichs shows all the
|
This action first displays a confirmation page which shows all the
|
||||||
deleteable objects, or, if the user has no permission one of the related
|
deleteable objects, or, if the user has no permission one of the related
|
||||||
childs (foreignkeys), a "permission denied" message.
|
childs (foreignkeys), a "permission denied" message.
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ class PermLookupDict(object):
|
||||||
return self.user.has_perm("%s.%s" % (self.app_label, perm_name))
|
return self.user.has_perm("%s.%s" % (self.app_label, perm_name))
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
# To fix 'item in perms.someapp' and __getitem__ iteraction we need to
|
# To fix 'item in perms.someapp' and __getitem__ interaction we need to
|
||||||
# define __iter__. See #18979 for details.
|
# define __iter__. See #18979 for details.
|
||||||
raise TypeError("PermLookupDict is not iterable.")
|
raise TypeError("PermLookupDict is not iterable.")
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ class PostGISGeometryColumns(models.Model):
|
||||||
class PostGISSpatialRefSys(models.Model, SpatialRefSysMixin):
|
class PostGISSpatialRefSys(models.Model, SpatialRefSysMixin):
|
||||||
"""
|
"""
|
||||||
The 'spatial_ref_sys' table from PostGIS. See the PostGIS
|
The 'spatial_ref_sys' table from PostGIS. See the PostGIS
|
||||||
documentaiton at Ch. 4.2.1.
|
documentation at Ch. 4.2.1.
|
||||||
"""
|
"""
|
||||||
srid = models.IntegerField(primary_key=True)
|
srid = models.IntegerField(primary_key=True)
|
||||||
auth_name = models.CharField(max_length=256)
|
auth_name = models.CharField(max_length=256)
|
||||||
|
|
|
@ -500,7 +500,7 @@ class GeoQuerySet(QuerySet):
|
||||||
SQL function to call.
|
SQL function to call.
|
||||||
|
|
||||||
settings:
|
settings:
|
||||||
Dictonary of internal settings to customize for the spatial procedure.
|
Dictionary of internal settings to customize for the spatial procedure.
|
||||||
|
|
||||||
Public Keyword Arguments:
|
Public Keyword Arguments:
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ from django.utils import six
|
||||||
|
|
||||||
|
|
||||||
class OGRGeomType(object):
|
class OGRGeomType(object):
|
||||||
"Encapulates OGR Geometry Types."
|
"Encapsulates OGR Geometry Types."
|
||||||
|
|
||||||
wkb25bit = -2147483648
|
wkb25bit = -2147483648
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ class KMLSitemap(Sitemap):
|
||||||
|
|
||||||
def get_urls(self, page=1, site=None, protocol=None):
|
def get_urls(self, page=1, site=None, protocol=None):
|
||||||
"""
|
"""
|
||||||
This method is overrridden so the appropriate `geo_format` attribute
|
This method is overridden so the appropriate `geo_format` attribute
|
||||||
is placed on each URL element.
|
is placed on each URL element.
|
||||||
"""
|
"""
|
||||||
urls = Sitemap.get_urls(self, page=page, site=site, protocol=protocol)
|
urls = Sitemap.get_urls(self, page=page, site=site, protocol=protocol)
|
||||||
|
|
|
@ -302,7 +302,7 @@ class BaseExpression(object):
|
||||||
Does this expression contain a reference to some of the
|
Does this expression contain a reference to some of the
|
||||||
existing aggregates? If so, returns the aggregate and also
|
existing aggregates? If so, returns the aggregate and also
|
||||||
the lookup parts that *weren't* found. So, if
|
the lookup parts that *weren't* found. So, if
|
||||||
exsiting_aggregates = {'max_id': Max('id')}
|
existing_aggregates = {'max_id': Max('id')}
|
||||||
self.name = 'max_id'
|
self.name = 'max_id'
|
||||||
queryset.filter(max_id__range=[10,100])
|
queryset.filter(max_id__range=[10,100])
|
||||||
then this method will return Max('id') and those parts of the
|
then this method will return Max('id') and those parts of the
|
||||||
|
|
|
@ -841,7 +841,7 @@ def default_if_none(value, arg):
|
||||||
|
|
||||||
@register.filter(is_safe=False)
|
@register.filter(is_safe=False)
|
||||||
def divisibleby(value, arg):
|
def divisibleby(value, arg):
|
||||||
"""Returns True if the value is devisible by the argument."""
|
"""Returns True if the value is divisible by the argument."""
|
||||||
return int(value) % int(arg) == 0
|
return int(value) % int(arg) == 0
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -824,7 +824,7 @@ def do_for(parser, token):
|
||||||
than -- the following::
|
than -- the following::
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
{% if althete_list %}
|
{% if athlete_list %}
|
||||||
{% for athlete in athlete_list %}
|
{% for athlete in athlete_list %}
|
||||||
<li>{{ athlete.name }}</li>
|
<li>{{ athlete.name }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -118,7 +118,7 @@ div.admonition-philosophy { padding-left:65px; background:url(docicons-philosoph
|
||||||
div.admonition-behind-the-scenes { padding-left:65px; background:url(docicons-behindscenes.png) .8em .8em no-repeat;}
|
div.admonition-behind-the-scenes { padding-left:65px; background:url(docicons-behindscenes.png) .8em .8em no-repeat;}
|
||||||
.admonition.warning { background:url(docicons-warning.png) .8em .8em no-repeat; border:1px solid #ffc83c;}
|
.admonition.warning { background:url(docicons-warning.png) .8em .8em no-repeat; border:1px solid #ffc83c;}
|
||||||
|
|
||||||
/*** versoinadded/changes ***/
|
/*** versionadded/changes ***/
|
||||||
div.versionadded, div.versionchanged { }
|
div.versionadded, div.versionchanged { }
|
||||||
div.versionadded span.title, div.versionchanged span.title, span.versionmodified { font-weight: bold; }
|
div.versionadded span.title, div.versionchanged span.title, span.versionmodified { font-weight: bold; }
|
||||||
div.versionadded, div.versionchanged, div.deprecated { color:#555; }
|
div.versionadded, div.versionchanged, div.deprecated { color:#555; }
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# This file is execfile()d with the current directory set to its containing dir.
|
# This file is execfile()d with the current directory set to its containing dir.
|
||||||
#
|
#
|
||||||
# The contents of this file are pickled, so don't put values in the namespace
|
# The contents of this file are pickled, so don't put values in the namespace
|
||||||
# that aren't pickleable (module imports are okay, they're removed automatically).
|
# that aren't picklable (module imports are okay, they're removed automatically).
|
||||||
#
|
#
|
||||||
# All configuration values have a default; values that are commented out
|
# All configuration values have a default; values that are commented out
|
||||||
# serve to show the default.
|
# serve to show the default.
|
||||||
|
|
|
@ -823,7 +823,7 @@ This example illustrates all possible attributes and methods for a
|
||||||
|
|
||||||
def item_updateddate(self):
|
def item_updateddate(self):
|
||||||
"""
|
"""
|
||||||
Returns the updateddated for every item in the feed.
|
Returns the updateddate for every item in the feed.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
item_updateddate = datetime.datetime(2005, 5, 3) # Hard-coded updateddate.
|
item_updateddate = datetime.datetime(2005, 5, 3) # Hard-coded updateddate.
|
||||||
|
|
|
@ -451,6 +451,7 @@ pgAdmin
|
||||||
phishing
|
phishing
|
||||||
php
|
php
|
||||||
pickleable
|
pickleable
|
||||||
|
picklable
|
||||||
picosecond
|
picosecond
|
||||||
PIL
|
PIL
|
||||||
pingback
|
pingback
|
||||||
|
|
|
@ -682,7 +682,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
|
||||||
|
|
||||||
def test_add_row_selection(self):
|
def test_add_row_selection(self):
|
||||||
"""
|
"""
|
||||||
Ensure that the status line for selected rows gets updated correcly (#22038)
|
Ensure that the status line for selected rows gets updated correctly (#22038)
|
||||||
"""
|
"""
|
||||||
self.admin_login(username='super', password='secret')
|
self.admin_login(username='super', password='secret')
|
||||||
self.selenium.get('%s%s' % (self.live_server_url,
|
self.selenium.get('%s%s' % (self.live_server_url,
|
||||||
|
|
|
@ -1113,9 +1113,9 @@ class AggregationTests(TestCase):
|
||||||
in group by.
|
in group by.
|
||||||
"""
|
"""
|
||||||
qs = Book.objects.annotate(
|
qs = Book.objects.annotate(
|
||||||
acount=Count('authors')
|
account=Count('authors')
|
||||||
).filter(
|
).filter(
|
||||||
acount=F('publisher__num_awards')
|
account=F('publisher__num_awards')
|
||||||
)
|
)
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
qs, ['Sams Teach Yourself Django in 24 Hours'],
|
qs, ['Sams Teach Yourself Django in 24 Hours'],
|
||||||
|
|
|
@ -304,7 +304,7 @@ class UserChangeFormTest(TestCase):
|
||||||
# Just check we can create it
|
# Just check we can create it
|
||||||
MyUserForm({})
|
MyUserForm({})
|
||||||
|
|
||||||
def test_unsuable_password(self):
|
def test_unusable_password(self):
|
||||||
user = User.objects.get(username='empty_password')
|
user = User.objects.get(username='empty_password')
|
||||||
user.set_unusable_password()
|
user.set_unusable_password()
|
||||||
user.save()
|
user.save()
|
||||||
|
|
|
@ -504,7 +504,7 @@ class LoginTest(AuthViewsTestCase):
|
||||||
for bad_url in ('http://example.com',
|
for bad_url in ('http://example.com',
|
||||||
'http:///example.com',
|
'http:///example.com',
|
||||||
'https://example.com',
|
'https://example.com',
|
||||||
'ftp://exampel.com',
|
'ftp://example.com',
|
||||||
'///example.com',
|
'///example.com',
|
||||||
'//example.com',
|
'//example.com',
|
||||||
'javascript:alert("XSS")'):
|
'javascript:alert("XSS")'):
|
||||||
|
@ -525,7 +525,7 @@ class LoginTest(AuthViewsTestCase):
|
||||||
# These URLs *should* still pass the security check
|
# These URLs *should* still pass the security check
|
||||||
for good_url in ('/view/?param=http://example.com',
|
for good_url in ('/view/?param=http://example.com',
|
||||||
'/view/?param=https://example.com',
|
'/view/?param=https://example.com',
|
||||||
'/view?param=ftp://exampel.com',
|
'/view?param=ftp://example.com',
|
||||||
'view/?param=//example.com',
|
'view/?param=//example.com',
|
||||||
'https://testserver/',
|
'https://testserver/',
|
||||||
'HTTPS://testserver/',
|
'HTTPS://testserver/',
|
||||||
|
@ -782,7 +782,7 @@ class LogoutTest(AuthViewsTestCase):
|
||||||
for bad_url in ('http://example.com',
|
for bad_url in ('http://example.com',
|
||||||
'http:///example.com',
|
'http:///example.com',
|
||||||
'https://example.com',
|
'https://example.com',
|
||||||
'ftp://exampel.com',
|
'ftp://example.com',
|
||||||
'///example.com',
|
'///example.com',
|
||||||
'//example.com',
|
'//example.com',
|
||||||
'javascript:alert("XSS")'):
|
'javascript:alert("XSS")'):
|
||||||
|
@ -801,7 +801,7 @@ class LogoutTest(AuthViewsTestCase):
|
||||||
# These URLs *should* still pass the security check
|
# These URLs *should* still pass the security check
|
||||||
for good_url in ('/view/?param=http://example.com',
|
for good_url in ('/view/?param=http://example.com',
|
||||||
'/view/?param=https://example.com',
|
'/view/?param=https://example.com',
|
||||||
'/view?param=ftp://exampel.com',
|
'/view?param=ftp://example.com',
|
||||||
'view/?param=//example.com',
|
'view/?param=//example.com',
|
||||||
'https://testserver/',
|
'https://testserver/',
|
||||||
'HTTPS://testserver/',
|
'HTTPS://testserver/',
|
||||||
|
@ -947,6 +947,6 @@ class UUIDUserTests(TestCase):
|
||||||
})
|
})
|
||||||
self.assertRedirects(response, user_change_url)
|
self.assertRedirects(response, user_change_url)
|
||||||
row = LogEntry.objects.latest('id')
|
row = LogEntry.objects.latest('id')
|
||||||
self.assertEqual(row.user_id, 1) # harcoded in CustomUserAdmin.log_change()
|
self.assertEqual(row.user_id, 1) # hardcoded in CustomUserAdmin.log_change()
|
||||||
self.assertEqual(row.object_id, str(u.pk))
|
self.assertEqual(row.object_id, str(u.pk))
|
||||||
self.assertEqual(row.change_message, 'Changed password.')
|
self.assertEqual(row.change_message, 'Changed password.')
|
||||||
|
|
|
@ -224,7 +224,7 @@ class CheckStrictTransportSecurityTest(TestCase):
|
||||||
@override_settings(
|
@override_settings(
|
||||||
MIDDLEWARE_CLASSES=[],
|
MIDDLEWARE_CLASSES=[],
|
||||||
SECURE_HSTS_SECONDS=0)
|
SECURE_HSTS_SECONDS=0)
|
||||||
def test_no_sts_no_middlware(self):
|
def test_no_sts_no_middleware(self):
|
||||||
"""
|
"""
|
||||||
Don't warn if SECURE_HSTS_SECONDS isn't > 0 and SecurityMiddleware isn't
|
Don't warn if SECURE_HSTS_SECONDS isn't > 0 and SecurityMiddleware isn't
|
||||||
installed.
|
installed.
|
||||||
|
@ -258,7 +258,7 @@ class CheckStrictTransportSecuritySubdomainsTest(TestCase):
|
||||||
MIDDLEWARE_CLASSES=[],
|
MIDDLEWARE_CLASSES=[],
|
||||||
SECURE_HSTS_INCLUDE_SUBDOMAINS=False,
|
SECURE_HSTS_INCLUDE_SUBDOMAINS=False,
|
||||||
SECURE_HSTS_SECONDS=3600)
|
SECURE_HSTS_SECONDS=3600)
|
||||||
def test_no_sts_subdomains_no_middlware(self):
|
def test_no_sts_subdomains_no_middleware(self):
|
||||||
"""
|
"""
|
||||||
Don't warn if SecurityMiddleware isn't installed.
|
Don't warn if SecurityMiddleware isn't installed.
|
||||||
"""
|
"""
|
||||||
|
@ -415,7 +415,7 @@ class CheckSSLRedirectTest(TestCase):
|
||||||
@override_settings(
|
@override_settings(
|
||||||
MIDDLEWARE_CLASSES=[],
|
MIDDLEWARE_CLASSES=[],
|
||||||
SECURE_SSL_REDIRECT=False)
|
SECURE_SSL_REDIRECT=False)
|
||||||
def test_no_ssl_redirect_no_middlware(self):
|
def test_no_ssl_redirect_no_middleware(self):
|
||||||
"""
|
"""
|
||||||
Don't warn if SECURE_SSL_REDIRECT is False and SecurityMiddleware isn't
|
Don't warn if SECURE_SSL_REDIRECT is False and SecurityMiddleware isn't
|
||||||
installed.
|
installed.
|
||||||
|
|
|
@ -1098,7 +1098,7 @@ class CaseExpressionTests(TestCase):
|
||||||
lambda x: (x, x.foo)
|
lambda x: (x, x.foo)
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_join_promotion_multiple_annonations(self):
|
def test_join_promotion_multiple_annotations(self):
|
||||||
o = CaseTestModel.objects.create(integer=1, integer2=1, string='1')
|
o = CaseTestModel.objects.create(integer=1, integer2=1, string='1')
|
||||||
# Testing that:
|
# Testing that:
|
||||||
# 1. There isn't any object on the remote side of the fk_rel
|
# 1. There isn't any object on the remote side of the fk_rel
|
||||||
|
|
|
@ -517,7 +517,7 @@ class FormsTestCase(TestCase):
|
||||||
self.assertHTMLEqual(str(f['when']), '<input type="text" name="when_0" value="1992-01-01" id="id_when_0" /><input type="text" name="when_1" value="01:01" id="id_when_1" />')
|
self.assertHTMLEqual(str(f['when']), '<input type="text" name="when_0" value="1992-01-01" id="id_when_0" /><input type="text" name="when_1" value="01:01" id="id_when_1" />')
|
||||||
self.assertHTMLEqual(f['when'].as_hidden(), '<input type="hidden" name="when_0" value="1992-01-01" id="id_when_0" /><input type="hidden" name="when_1" value="01:01" id="id_when_1" />')
|
self.assertHTMLEqual(f['when'].as_hidden(), '<input type="hidden" name="when_0" value="1992-01-01" id="id_when_0" /><input type="hidden" name="when_1" value="01:01" id="id_when_1" />')
|
||||||
|
|
||||||
def test_mulitple_choice_checkbox(self):
|
def test_multiple_choice_checkbox(self):
|
||||||
# MultipleChoiceField can also be used with the CheckboxSelectMultiple widget.
|
# MultipleChoiceField can also be used with the CheckboxSelectMultiple widget.
|
||||||
class SongForm(Form):
|
class SongForm(Form):
|
||||||
name = CharField()
|
name = CharField()
|
||||||
|
|
|
@ -173,7 +173,7 @@ class FormsModelTestCase(TestCase):
|
||||||
m.delete()
|
m.delete()
|
||||||
|
|
||||||
def test_boundary_conditions(self):
|
def test_boundary_conditions(self):
|
||||||
# Boundary conditions on a PostitiveIntegerField #########################
|
# Boundary conditions on a PositiveIntegerField #########################
|
||||||
class BoundaryForm(ModelForm):
|
class BoundaryForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = BoundaryModel
|
model = BoundaryModel
|
||||||
|
|
|
@ -309,7 +309,7 @@ class HttpResponseTests(unittest.TestCase):
|
||||||
h['Content-Disposition'] = 'attachment; filename="%s"' % f
|
h['Content-Disposition'] = 'attachment; filename="%s"' % f
|
||||||
# This one is triggering http://bugs.python.org/issue20747, that is Python
|
# This one is triggering http://bugs.python.org/issue20747, that is Python
|
||||||
# will itself insert a newline in the header
|
# will itself insert a newline in the header
|
||||||
h['Content-Disposition'] = 'attachement; filename="EdelRot_Blu\u0308te (3)-0.JPG"'
|
h['Content-Disposition'] = 'attachment; filename="EdelRot_Blu\u0308te (3)-0.JPG"'
|
||||||
|
|
||||||
def test_newlines_in_headers(self):
|
def test_newlines_in_headers(self):
|
||||||
# Bug #10188: Do not allow newlines in headers (CR or LF)
|
# Bug #10188: Do not allow newlines in headers (CR or LF)
|
||||||
|
|
|
@ -9,6 +9,6 @@ dummy2 = _("This is another translatable string.")
|
||||||
# This file has a literal with plural forms. When processed first, makemessages
|
# This file has a literal with plural forms. When processed first, makemessages
|
||||||
# shouldn't create a .po file with duplicate `Plural-Forms` headers
|
# shouldn't create a .po file with duplicate `Plural-Forms` headers
|
||||||
number = 3
|
number = 3
|
||||||
dummuy3 = ungettext("%(number)s Foo", "%(number)s Foos", number) % {'number': number}
|
dummy3 = ungettext("%(number)s Foo", "%(number)s Foos", number) % {'number': number}
|
||||||
|
|
||||||
dummy4 = _('Size')
|
dummy4 = _('Size')
|
||||||
|
|
|
@ -345,7 +345,7 @@ class FieldNamesTests(IsolatedModelsTestCase):
|
||||||
]
|
]
|
||||||
|
|
||||||
# Second error because the FK specified in the `through` model
|
# Second error because the FK specified in the `through` model
|
||||||
# `m2msimple` has auto-genererated name longer than allowed.
|
# `m2msimple` has auto-generated name longer than allowed.
|
||||||
# There will be no check errors in the other M2M because it
|
# There will be no check errors in the other M2M because it
|
||||||
# specifies db_column for the FK in `through` model even if the actual
|
# specifies db_column for the FK in `through` model even if the actual
|
||||||
# name is longer than the limits of the database.
|
# name is longer than the limits of the database.
|
||||||
|
|
|
@ -346,7 +346,7 @@ class M2mThroughReferentialTests(TestCase):
|
||||||
[]
|
[]
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_self_referential_non_symmentrical_first_side(self):
|
def test_self_referential_non_symmetrical_first_side(self):
|
||||||
tony = PersonSelfRefM2M.objects.create(name="Tony")
|
tony = PersonSelfRefM2M.objects.create(name="Tony")
|
||||||
chris = PersonSelfRefM2M.objects.create(name="Chris")
|
chris = PersonSelfRefM2M.objects.create(name="Chris")
|
||||||
Friendship.objects.create(
|
Friendship.objects.create(
|
||||||
|
@ -359,7 +359,7 @@ class M2mThroughReferentialTests(TestCase):
|
||||||
attrgetter("name")
|
attrgetter("name")
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_self_referential_non_symmentrical_second_side(self):
|
def test_self_referential_non_symmetrical_second_side(self):
|
||||||
tony = PersonSelfRefM2M.objects.create(name="Tony")
|
tony = PersonSelfRefM2M.objects.create(name="Tony")
|
||||||
chris = PersonSelfRefM2M.objects.create(name="Chris")
|
chris = PersonSelfRefM2M.objects.create(name="Chris")
|
||||||
Friendship.objects.create(
|
Friendship.objects.create(
|
||||||
|
@ -371,7 +371,7 @@ class M2mThroughReferentialTests(TestCase):
|
||||||
[]
|
[]
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_self_referential_non_symmentrical_clear_first_side(self):
|
def test_self_referential_non_symmetrical_clear_first_side(self):
|
||||||
tony = PersonSelfRefM2M.objects.create(name="Tony")
|
tony = PersonSelfRefM2M.objects.create(name="Tony")
|
||||||
chris = PersonSelfRefM2M.objects.create(name="Chris")
|
chris = PersonSelfRefM2M.objects.create(name="Chris")
|
||||||
Friendship.objects.create(
|
Friendship.objects.create(
|
||||||
|
@ -392,7 +392,7 @@ class M2mThroughReferentialTests(TestCase):
|
||||||
attrgetter("name")
|
attrgetter("name")
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_self_referential_symmentrical(self):
|
def test_self_referential_symmetrical(self):
|
||||||
tony = PersonSelfRefM2M.objects.create(name="Tony")
|
tony = PersonSelfRefM2M.objects.create(name="Tony")
|
||||||
chris = PersonSelfRefM2M.objects.create(name="Chris")
|
chris = PersonSelfRefM2M.objects.create(name="Chris")
|
||||||
Friendship.objects.create(
|
Friendship.objects.create(
|
||||||
|
|
|
@ -163,7 +163,7 @@ class CommonMiddlewareTest(TestCase):
|
||||||
request.urlconf = 'middleware.extra_urls'
|
request.urlconf = 'middleware.extra_urls'
|
||||||
r = CommonMiddleware().process_request(request)
|
r = CommonMiddleware().process_request(request)
|
||||||
self.assertIsNotNone(r,
|
self.assertIsNotNone(r,
|
||||||
"CommonMiddlware failed to return APPEND_SLASH redirect using request.urlconf")
|
"CommonMiddleware failed to return APPEND_SLASH redirect using request.urlconf")
|
||||||
self.assertEqual(r.status_code, 301)
|
self.assertEqual(r.status_code, 301)
|
||||||
self.assertEqual(r.url, 'http://testserver/customurlconf/slash/')
|
self.assertEqual(r.url, 'http://testserver/customurlconf/slash/')
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ class CommonMiddlewareTest(TestCase):
|
||||||
request.urlconf = 'middleware.extra_urls'
|
request.urlconf = 'middleware.extra_urls'
|
||||||
r = CommonMiddleware().process_request(request)
|
r = CommonMiddleware().process_request(request)
|
||||||
self.assertIsNotNone(r,
|
self.assertIsNotNone(r,
|
||||||
"CommonMiddlware failed to return APPEND_SLASH redirect using request.urlconf")
|
"CommonMiddleware failed to return APPEND_SLASH redirect using request.urlconf")
|
||||||
self.assertEqual(r.status_code, 301)
|
self.assertEqual(r.status_code, 301)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
r.url,
|
r.url,
|
||||||
|
|
|
@ -486,9 +486,9 @@ class WriterTests(TestCase):
|
||||||
# Yes, it doesn't make sense to use a class as a default for a
|
# Yes, it doesn't make sense to use a class as a default for a
|
||||||
# CharField. It does make sense for custom fields though, for example
|
# CharField. It does make sense for custom fields though, for example
|
||||||
# an enumfield that takes the enum class as an argument.
|
# an enumfield that takes the enum class as an argument.
|
||||||
class DeconstructableInstances(object):
|
class DeconstructibleInstances(object):
|
||||||
def deconstruct(self):
|
def deconstruct(self):
|
||||||
return ('DeconstructableInstances', [], {})
|
return ('DeconstructibleInstances', [], {})
|
||||||
|
|
||||||
string = MigrationWriter.serialize(models.CharField(default=DeconstructableInstances))[0]
|
string = MigrationWriter.serialize(models.CharField(default=DeconstructibleInstances))[0]
|
||||||
self.assertEqual(string, "models.CharField(default=migrations.test_writer.DeconstructableInstances)")
|
self.assertEqual(string, "models.CharField(default=migrations.test_writer.DeconstructibleInstances)")
|
||||||
|
|
|
@ -248,7 +248,7 @@ if Image:
|
||||||
name = models.CharField(max_length=50)
|
name = models.CharField(max_length=50)
|
||||||
mugshot = TestImageField(storage=temp_storage, upload_to='tests')
|
mugshot = TestImageField(storage=temp_storage, upload_to='tests')
|
||||||
|
|
||||||
class AbsctractPersonWithHeight(models.Model):
|
class AbstractPersonWithHeight(models.Model):
|
||||||
"""
|
"""
|
||||||
Abstract model that defines an ImageField with only one dimension field
|
Abstract model that defines an ImageField with only one dimension field
|
||||||
to make sure the dimension update is correctly run on concrete subclass
|
to make sure the dimension update is correctly run on concrete subclass
|
||||||
|
@ -261,9 +261,9 @@ if Image:
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
class PersonWithHeight(AbsctractPersonWithHeight):
|
class PersonWithHeight(AbstractPersonWithHeight):
|
||||||
"""
|
"""
|
||||||
Concrete model that subclass an abctract one with only on dimension
|
Concrete model that subclass an abstract one with only on dimension
|
||||||
field.
|
field.
|
||||||
"""
|
"""
|
||||||
name = models.CharField(max_length=50)
|
name = models.CharField(max_length=50)
|
||||||
|
@ -295,7 +295,7 @@ if Image:
|
||||||
Model that:
|
Model that:
|
||||||
* Defines two ImageFields
|
* Defines two ImageFields
|
||||||
* Defines the height/width fields before the ImageFields
|
* Defines the height/width fields before the ImageFields
|
||||||
* Has a nullalble ImageField
|
* Has a nullable ImageField
|
||||||
"""
|
"""
|
||||||
name = models.CharField(max_length=50)
|
name = models.CharField(max_length=50)
|
||||||
mugshot_height = models.PositiveSmallIntegerField()
|
mugshot_height = models.PositiveSmallIntegerField()
|
||||||
|
|
|
@ -39,7 +39,7 @@ class DefaultRelatedNameTests(TestCase):
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
self.fail("Book should have a model_options_bookstores relation.")
|
self.fail("Book should have a model_options_bookstores relation.")
|
||||||
|
|
||||||
def test_inheritance_with_overrided_default_related_name(self):
|
def test_inheritance_with_overridden_default_related_name(self):
|
||||||
try:
|
try:
|
||||||
self.book.editor_stores
|
self.book.editor_stores
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
|
|
@ -110,7 +110,7 @@ class ModelAdminTests(TestCase):
|
||||||
self.assertTrue(ma.lookup_allowed('name__nonexistent', 'test_value'))
|
self.assertTrue(ma.lookup_allowed('name__nonexistent', 'test_value'))
|
||||||
|
|
||||||
def test_field_arguments(self):
|
def test_field_arguments(self):
|
||||||
# If we specify the fields argument, fieldsets_add and fielsets_change should
|
# If we specify the fields argument, fieldsets_add and fieldsets_change should
|
||||||
# just stick the fields into a formsets structure and return it.
|
# just stick the fields into a formsets structure and return it.
|
||||||
class BandAdmin(ModelAdmin):
|
class BandAdmin(ModelAdmin):
|
||||||
fields = ['name']
|
fields = ['name']
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
"""
|
"""
|
||||||
Regression tests for proper working of ForeignKey(null=True). Tests these bugs:
|
Regression tests for proper working of ForeignKey(null=True). Tests these bugs:
|
||||||
|
|
||||||
* #7512: including a nullable foreign key reference in Meta ordering has un
|
* #7512: including a nullable foreign key reference in Meta ordering has
|
||||||
xpected results
|
unexpected results
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
|
@ -29,7 +29,7 @@ class ProxyModelTests(TestCase):
|
||||||
DEFAULT_DB_ALIAS).as_sql()
|
DEFAULT_DB_ALIAS).as_sql()
|
||||||
self.assertEqual(my_person_sql, person_sql)
|
self.assertEqual(my_person_sql, person_sql)
|
||||||
|
|
||||||
def test_inheretance_new_table(self):
|
def test_inheritance_new_table(self):
|
||||||
"""
|
"""
|
||||||
The StatusPerson models should have its own table (it's using ORM-level
|
The StatusPerson models should have its own table (it's using ORM-level
|
||||||
inheritance).
|
inheritance).
|
||||||
|
|
|
@ -56,7 +56,7 @@ class Note(models.Model):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(Note, self).__init__(*args, **kwargs)
|
super(Note, self).__init__(*args, **kwargs)
|
||||||
# Regression for #13227 -- having an attribute that
|
# Regression for #13227 -- having an attribute that
|
||||||
# is unpickleable doesn't stop you from cloning queries
|
# is unpicklable doesn't stop you from cloning queries
|
||||||
# that use objects of that type as an argument.
|
# that use objects of that type as an argument.
|
||||||
self.lock = threading.Lock()
|
self.lock = threading.Lock()
|
||||||
|
|
||||||
|
|
|
@ -1854,7 +1854,7 @@ class Queries6Tests(TestCase):
|
||||||
def test_tickets_8921_9188(self):
|
def test_tickets_8921_9188(self):
|
||||||
# Incorrect SQL was being generated for certain types of exclude()
|
# Incorrect SQL was being generated for certain types of exclude()
|
||||||
# queries that crossed multi-valued relations (#8921, #9188 and some
|
# queries that crossed multi-valued relations (#8921, #9188 and some
|
||||||
# pre-emptively discovered cases).
|
# preemptively discovered cases).
|
||||||
|
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
PointerA.objects.filter(connection__pointerb__id=1),
|
PointerA.objects.filter(connection__pointerb__id=1),
|
||||||
|
@ -3086,7 +3086,7 @@ class NullJoinPromotionOrTest(TestCase):
|
||||||
p1 = Program.objects.create(identifier=i1)
|
p1 = Program.objects.create(identifier=i1)
|
||||||
c1 = Channel.objects.create(identifier=i1)
|
c1 = Channel.objects.create(identifier=i1)
|
||||||
p2 = Program.objects.create(identifier=i2)
|
p2 = Program.objects.create(identifier=i2)
|
||||||
# Test OR + doubleneq. The expected result is that channel is LOUTER
|
# Test OR + doubleneg. The expected result is that channel is LOUTER
|
||||||
# joined, program INNER joined
|
# joined, program INNER joined
|
||||||
qs1_filter = Identifier.objects.filter(
|
qs1_filter = Identifier.objects.filter(
|
||||||
Q(program__id=p2.id, channel__id=c1.id)
|
Q(program__id=p2.id, channel__id=c1.id)
|
||||||
|
@ -3173,7 +3173,7 @@ class JoinReuseTest(TestCase):
|
||||||
|
|
||||||
|
|
||||||
class DisjunctionPromotionTests(TestCase):
|
class DisjunctionPromotionTests(TestCase):
|
||||||
def test_disjuction_promotion_select_related(self):
|
def test_disjunction_promotion_select_related(self):
|
||||||
fk1 = FK1.objects.create(f1='f1', f2='f2')
|
fk1 = FK1.objects.create(f1='f1', f2='f2')
|
||||||
basea = BaseA.objects.create(a=fk1)
|
basea = BaseA.objects.create(a=fk1)
|
||||||
qs = BaseA.objects.filter(Q(a=fk1) | Q(b=2))
|
qs = BaseA.objects.filter(Q(a=fk1) | Q(b=2))
|
||||||
|
|
|
@ -59,7 +59,7 @@ class PickleabilityTestCase(TestCase):
|
||||||
|
|
||||||
def test_model_pickle(self):
|
def test_model_pickle(self):
|
||||||
"""
|
"""
|
||||||
Test that a model not defined on module level is pickleable.
|
Test that a model not defined on module level is picklable.
|
||||||
"""
|
"""
|
||||||
original = Container.SomeModel(pk=1)
|
original = Container.SomeModel(pk=1)
|
||||||
dumped = pickle.dumps(original)
|
dumped = pickle.dumps(original)
|
||||||
|
|
|
@ -587,7 +587,7 @@ class HostValidationTests(SimpleTestCase):
|
||||||
'12.34.56.78:443',
|
'12.34.56.78:443',
|
||||||
'[2001:19f0:feee::dead:beef:cafe]',
|
'[2001:19f0:feee::dead:beef:cafe]',
|
||||||
'[2001:19f0:feee::dead:beef:cafe]:8080',
|
'[2001:19f0:feee::dead:beef:cafe]:8080',
|
||||||
'xn--4ca9at.com', # Punnycode for öäü.com
|
'xn--4ca9at.com', # Punycode for öäü.com
|
||||||
'anything.multitenant.com',
|
'anything.multitenant.com',
|
||||||
'multitenant.com',
|
'multitenant.com',
|
||||||
'insensitive.com',
|
'insensitive.com',
|
||||||
|
@ -657,7 +657,7 @@ class HostValidationTests(SimpleTestCase):
|
||||||
'12.34.56.78:443',
|
'12.34.56.78:443',
|
||||||
'[2001:19f0:feee::dead:beef:cafe]',
|
'[2001:19f0:feee::dead:beef:cafe]',
|
||||||
'[2001:19f0:feee::dead:beef:cafe]:8080',
|
'[2001:19f0:feee::dead:beef:cafe]:8080',
|
||||||
'xn--4ca9at.com', # Punnycode for öäü.com
|
'xn--4ca9at.com', # Punycode for öäü.com
|
||||||
]
|
]
|
||||||
|
|
||||||
for host in legit_hosts:
|
for host in legit_hosts:
|
||||||
|
@ -703,7 +703,7 @@ class HostValidationTests(SimpleTestCase):
|
||||||
'example.com',
|
'example.com',
|
||||||
'12.34.56.78',
|
'12.34.56.78',
|
||||||
'[2001:19f0:feee::dead:beef:cafe]',
|
'[2001:19f0:feee::dead:beef:cafe]',
|
||||||
'xn--4ca9at.com', # Punnycode for öäü.com
|
'xn--4ca9at.com', # Punycode for öäü.com
|
||||||
]:
|
]:
|
||||||
request = HttpRequest()
|
request = HttpRequest()
|
||||||
request.META = {'HTTP_HOST': host}
|
request.META = {'HTTP_HOST': host}
|
||||||
|
|
|
@ -313,7 +313,7 @@ The end."""),
|
||||||
|
|
||||||
(im2m_obj, 470, M2MIntermediateData, None),
|
(im2m_obj, 470, M2MIntermediateData, None),
|
||||||
|
|
||||||
# testing post- and prereferences and extra fields
|
# testing post- and pre-references and extra fields
|
||||||
(im_obj, 480, Intermediate, {'right': 300, 'left': 470}),
|
(im_obj, 480, Intermediate, {'right': 300, 'left': 470}),
|
||||||
(im_obj, 481, Intermediate, {'right': 300, 'left': 490}),
|
(im_obj, 481, Intermediate, {'right': 300, 'left': 490}),
|
||||||
(im_obj, 482, Intermediate, {'right': 500, 'left': 470}),
|
(im_obj, 482, Intermediate, {'right': 500, 'left': 470}),
|
||||||
|
|
|
@ -168,7 +168,7 @@ class SignalTests(BaseSignalTest):
|
||||||
data.append(instance)
|
data.append(instance)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
c1 = Car.objects.create(make="Volkswagon", model="Passat")
|
c1 = Car.objects.create(make="Volkswagen", model="Passat")
|
||||||
self.assertEqual(data, [c1, c1])
|
self.assertEqual(data, [c1, c1])
|
||||||
finally:
|
finally:
|
||||||
signals.pre_save.disconnect(decorated_handler)
|
signals.pre_save.disconnect(decorated_handler)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
A subset of the tests in tests/servers/tests exercicing
|
A subset of the tests in tests/servers/tests exercising
|
||||||
django.contrib.staticfiles.testing.StaticLiveServerTestCase instead of
|
django.contrib.staticfiles.testing.StaticLiveServerTestCase instead of
|
||||||
django.test.LiveServerTestCase.
|
django.test.LiveServerTestCase.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -166,7 +166,7 @@ class SimpleTemplateResponseTest(SimpleTestCase):
|
||||||
|
|
||||||
def test_pickling(self):
|
def test_pickling(self):
|
||||||
# Create a template response. The context is
|
# Create a template response. The context is
|
||||||
# known to be unpickleable (e.g., a function).
|
# known to be unpicklable (e.g., a function).
|
||||||
response = SimpleTemplateResponse('first/test.html', {
|
response = SimpleTemplateResponse('first/test.html', {
|
||||||
'value': 123,
|
'value': 123,
|
||||||
'fn': datetime.now,
|
'fn': datetime.now,
|
||||||
|
@ -289,7 +289,7 @@ class TemplateResponseTest(SimpleTestCase):
|
||||||
|
|
||||||
def test_pickling(self):
|
def test_pickling(self):
|
||||||
# Create a template response. The context is
|
# Create a template response. The context is
|
||||||
# known to be unpickleable (e.g., a function).
|
# known to be unpicklable (e.g., a function).
|
||||||
response = TemplateResponse(self.factory.get('/'),
|
response = TemplateResponse(self.factory.get('/'),
|
||||||
'first/test.html', {
|
'first/test.html', {
|
||||||
'value': 123,
|
'value': 123,
|
||||||
|
|
|
@ -155,11 +155,11 @@ class DiscoverRunnerTest(TestCase):
|
||||||
self.assertIn('test_2', suite[8].id(),
|
self.assertIn('test_2', suite[8].id(),
|
||||||
msg="Methods of unittest cases should be reversed.")
|
msg="Methods of unittest cases should be reversed.")
|
||||||
|
|
||||||
def test_overrideable_test_suite(self):
|
def test_overridable_test_suite(self):
|
||||||
self.assertEqual(DiscoverRunner().test_suite, TestSuite)
|
self.assertEqual(DiscoverRunner().test_suite, TestSuite)
|
||||||
|
|
||||||
def test_overrideable_test_runner(self):
|
def test_overridable_test_runner(self):
|
||||||
self.assertEqual(DiscoverRunner().test_runner, TextTestRunner)
|
self.assertEqual(DiscoverRunner().test_runner, TextTestRunner)
|
||||||
|
|
||||||
def test_overrideable_test_loader(self):
|
def test_overridable_test_loader(self):
|
||||||
self.assertEqual(DiscoverRunner().test_loader, defaultTestLoader)
|
self.assertEqual(DiscoverRunner().test_loader, defaultTestLoader)
|
||||||
|
|
|
@ -155,7 +155,7 @@ class LegacyDatabaseTests(TestCase):
|
||||||
self.assertEqual(event.dt.replace(tzinfo=ICT), dt)
|
self.assertEqual(event.dt.replace(tzinfo=ICT), dt)
|
||||||
|
|
||||||
@skipIfDBFeature('supports_timezones')
|
@skipIfDBFeature('supports_timezones')
|
||||||
def test_aware_datetime_unspported(self):
|
def test_aware_datetime_unsupported(self):
|
||||||
dt = datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)
|
dt = datetime.datetime(2011, 9, 1, 13, 20, 30, tzinfo=EAT)
|
||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
Event.objects.create(dt=dt)
|
Event.objects.create(dt=dt)
|
||||||
|
|
|
@ -129,7 +129,7 @@ class Unmanaged1(models.Model):
|
||||||
db_table = "unmanaged_models_proxy1"
|
db_table = "unmanaged_models_proxy1"
|
||||||
|
|
||||||
|
|
||||||
# Unmanged with an m2m to unmanaged: the intermediary table won't be created.
|
# Unmanaged with an m2m to unmanaged: the intermediary table won't be created.
|
||||||
class Unmanaged2(models.Model):
|
class Unmanaged2(models.Model):
|
||||||
mm = models.ManyToManyField(Unmanaged1)
|
mm = models.ManyToManyField(Unmanaged1)
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ Fragments
|
||||||
<center>  </center>
|
<center>  </center>
|
||||||
Fragments encompass both layout resource and Java source. Hence, unlike ``, they allow us to reuse the View components along with their functionality, if needed.
|
Fragments encompass both layout resource and Java source. Hence, unlike ``, they allow us to reuse the View components along with their functionality, if needed.
|
||||||
Fragments were first introduced in Honeycomb(API 11), living under the `android.app` package.
|
Fragments were first introduced in Honeycomb(API 11), living under the `android.app` package.
|
||||||
**Note**: API 11 implies that Fragments have no support for devices less than Honeycomb and, for the record, as of writing this post, [more than 50% of Android devices worldwide run versions of Android below Honeycomb](http://developer.android.com/about/dashboards/index.html). Developer dissapointed? You don't have to be, cause google has been cautious enough to add the Fragment APIs to the support library. Yay!
|
**Note**: API 11 implies that Fragments have no support for devices less than Honeycomb and, for the record, as of writing this post, [more than 50% of Android devices worldwide run versions of Android below Honeycomb](http://developer.android.com/about/dashboards/index.html). Developer disappointed? You don't have to be, cause google has been cautious enough to add the Fragment APIs to the support library. Yay!
|
||||||
|
|
||||||
In the support library Fragment APIs sit in the `android.support.v4.app` package. This post assumes that your `minSdk` support is below API 11. Hence we concentrate on the Fragment APIs of the support library.
|
In the support library Fragment APIs sit in the `android.support.v4.app` package. This post assumes that your `minSdk` support is below API 11. Hence we concentrate on the Fragment APIs of the support library.
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,7 @@ class TestUtilsHttp(unittest.TestCase):
|
||||||
for bad_url in ('http://example.com',
|
for bad_url in ('http://example.com',
|
||||||
'http:///example.com',
|
'http:///example.com',
|
||||||
'https://example.com',
|
'https://example.com',
|
||||||
'ftp://exampel.com',
|
'ftp://example.com',
|
||||||
r'\\example.com',
|
r'\\example.com',
|
||||||
r'\\\example.com',
|
r'\\\example.com',
|
||||||
r'/\\/example.com',
|
r'/\\/example.com',
|
||||||
|
@ -121,7 +121,7 @@ class TestUtilsHttp(unittest.TestCase):
|
||||||
self.assertFalse(http.is_safe_url(bad_url, host='testserver'), "%s should be blocked" % bad_url)
|
self.assertFalse(http.is_safe_url(bad_url, host='testserver'), "%s should be blocked" % bad_url)
|
||||||
for good_url in ('/view/?param=http://example.com',
|
for good_url in ('/view/?param=http://example.com',
|
||||||
'/view/?param=https://example.com',
|
'/view/?param=https://example.com',
|
||||||
'/view?param=ftp://exampel.com',
|
'/view?param=ftp://example.com',
|
||||||
'view/?param=//example.com',
|
'view/?param=//example.com',
|
||||||
'https://testserver/',
|
'https://testserver/',
|
||||||
'HTTPS://testserver/',
|
'HTTPS://testserver/',
|
||||||
|
|
Loading…
Reference in New Issue