Fixed all E226 violations
This commit is contained in:
parent
7288e1b02b
commit
c347f78cc1
|
@ -34,12 +34,12 @@ def paginator_number(cl, i):
|
||||||
if i == DOT:
|
if i == DOT:
|
||||||
return '... '
|
return '... '
|
||||||
elif i == cl.page_num:
|
elif i == cl.page_num:
|
||||||
return format_html('<span class="this-page">{0}</span> ', i+1)
|
return format_html('<span class="this-page">{0}</span> ', i + 1)
|
||||||
else:
|
else:
|
||||||
return format_html('<a href="{0}"{1}>{2}</a> ',
|
return format_html('<a href="{0}"{1}>{2}</a> ',
|
||||||
cl.get_query_string({PAGE_VAR: i}),
|
cl.get_query_string({PAGE_VAR: i}),
|
||||||
mark_safe(' class="end"' if i == cl.paginator.num_pages-1 else ''),
|
mark_safe(' class="end"' if i == cl.paginator.num_pages - 1 else ''),
|
||||||
i+1)
|
i + 1)
|
||||||
|
|
||||||
|
|
||||||
@register.inclusion_tag('admin/pagination.html')
|
@register.inclusion_tag('admin/pagination.html')
|
||||||
|
|
|
@ -412,7 +412,7 @@ def reverse_field_path(model, path):
|
||||||
for piece in pieces:
|
for piece in pieces:
|
||||||
field, model, direct, m2m = parent._meta.get_field_by_name(piece)
|
field, model, direct, m2m = parent._meta.get_field_by_name(piece)
|
||||||
# skip trailing data field if extant:
|
# skip trailing data field if extant:
|
||||||
if len(reversed_path) == len(pieces)-1: # final iteration
|
if len(reversed_path) == len(pieces) - 1: # final iteration
|
||||||
try:
|
try:
|
||||||
get_model_from_relation(field)
|
get_model_from_relation(field)
|
||||||
except NotRelationField:
|
except NotRelationField:
|
||||||
|
|
|
@ -236,7 +236,7 @@ class ChangeList(six.with_metaclass(RenameChangeListMethods)):
|
||||||
result_list = self.queryset._clone()
|
result_list = self.queryset._clone()
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
result_list = paginator.page(self.page_num+1).object_list
|
result_list = paginator.page(self.page_num + 1).object_list
|
||||||
except InvalidPage:
|
except InvalidPage:
|
||||||
raise IncorrectLookupParameters
|
raise IncorrectLookupParameters
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ class ListMixin(object):
|
||||||
del self[:]
|
del self[:]
|
||||||
else:
|
else:
|
||||||
cache = list(self)
|
cache = list(self)
|
||||||
for i in range(n-1):
|
for i in range(n - 1):
|
||||||
self.extend(cache)
|
self.extend(cache)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ class Polygon(GEOSGeometry):
|
||||||
return capi.get_extring(self.ptr)
|
return capi.get_extring(self.ptr)
|
||||||
else:
|
else:
|
||||||
# Getting the interior ring, have to subtract 1 from the index.
|
# Getting the interior ring, have to subtract 1 from the index.
|
||||||
return capi.get_intring(self.ptr, index-1)
|
return capi.get_intring(self.ptr, index - 1)
|
||||||
|
|
||||||
def _get_single_external(self, index):
|
def _get_single_external(self, index):
|
||||||
return GEOSGeometry(capi.geom_clone(self._get_single_internal(index)), srid=self.srid)
|
return GEOSGeometry(capi.geom_clone(self._get_single_internal(index)), srid=self.srid)
|
||||||
|
@ -170,6 +170,6 @@ class Polygon(GEOSGeometry):
|
||||||
@property
|
@property
|
||||||
def kml(self):
|
def kml(self):
|
||||||
"Returns the KML representation of this Polygon."
|
"Returns the KML representation of this Polygon."
|
||||||
inner_kml = ''.join("<innerBoundaryIs>%s</innerBoundaryIs>" % self[i+1].kml
|
inner_kml = ''.join("<innerBoundaryIs>%s</innerBoundaryIs>" % self[i + 1].kml
|
||||||
for i in xrange(self.num_interior_rings))
|
for i in xrange(self.num_interior_rings))
|
||||||
return "<Polygon><outerBoundaryIs>%s</outerBoundaryIs>%s</Polygon>" % (self[0].kml, inner_kml)
|
return "<Polygon><outerBoundaryIs>%s</outerBoundaryIs>%s</Polygon>" % (self[0].kml, inner_kml)
|
||||||
|
|
|
@ -1081,11 +1081,11 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
|
||||||
|
|
||||||
self.assertEqual(ls.project(Point(0, 20)), 10.0)
|
self.assertEqual(ls.project(Point(0, 20)), 10.0)
|
||||||
self.assertEqual(ls.project(Point(7, 6)), 24)
|
self.assertEqual(ls.project(Point(7, 6)), 24)
|
||||||
self.assertEqual(ls.project_normalized(Point(0, 20)), 1.0/3)
|
self.assertEqual(ls.project_normalized(Point(0, 20)), 1.0 / 3)
|
||||||
|
|
||||||
self.assertEqual(ls.interpolate(10), Point(0, 10))
|
self.assertEqual(ls.interpolate(10), Point(0, 10))
|
||||||
self.assertEqual(ls.interpolate(24), Point(10, 6))
|
self.assertEqual(ls.interpolate(24), Point(10, 6))
|
||||||
self.assertEqual(ls.interpolate_normalized(1.0/3), Point(0, 10))
|
self.assertEqual(ls.interpolate_normalized(1.0 / 3), Point(0, 10))
|
||||||
|
|
||||||
self.assertEqual(mls.project(Point(0, 20)), 10)
|
self.assertEqual(mls.project(Point(0, 20)), 10)
|
||||||
self.assertEqual(mls.project(Point(7, 6)), 16)
|
self.assertEqual(mls.project(Point(7, 6)), 16)
|
||||||
|
|
|
@ -349,8 +349,8 @@ class ListMixinTest(unittest.TestCase):
|
||||||
ul.sort()
|
ul.sort()
|
||||||
self.assertEqual(pl[:], ul[:], 'sort')
|
self.assertEqual(pl[:], ul[:], 'sort')
|
||||||
mid = pl[len(pl) // 2]
|
mid = pl[len(pl) // 2]
|
||||||
pl.sort(key=lambda x: (mid-x)**2)
|
pl.sort(key=lambda x: (mid - x) ** 2)
|
||||||
ul.sort(key=lambda x: (mid-x)**2)
|
ul.sort(key=lambda x: (mid - x) ** 2)
|
||||||
self.assertEqual(pl[:], ul[:], 'sort w/ key')
|
self.assertEqual(pl[:], ul[:], 'sort w/ key')
|
||||||
|
|
||||||
pl.insert(0, pl.pop())
|
pl.insert(0, pl.pop())
|
||||||
|
@ -359,8 +359,8 @@ class ListMixinTest(unittest.TestCase):
|
||||||
ul.sort(reverse=True)
|
ul.sort(reverse=True)
|
||||||
self.assertEqual(pl[:], ul[:], 'sort w/ reverse')
|
self.assertEqual(pl[:], ul[:], 'sort w/ reverse')
|
||||||
mid = pl[len(pl) // 2]
|
mid = pl[len(pl) // 2]
|
||||||
pl.sort(key=lambda x: (mid-x)**2)
|
pl.sort(key=lambda x: (mid - x) ** 2)
|
||||||
ul.sort(key=lambda x: (mid-x)**2)
|
ul.sort(key=lambda x: (mid - x) ** 2)
|
||||||
self.assertEqual(pl[:], ul[:], 'sort w/ key')
|
self.assertEqual(pl[:], ul[:], 'sort w/ key')
|
||||||
|
|
||||||
def test_12_arithmetic(self):
|
def test_12_arithmetic(self):
|
||||||
|
|
|
@ -79,7 +79,7 @@ class GoogleZoom(object):
|
||||||
fac = min(max(sin(DTOR * lat), -0.9999), 0.9999)
|
fac = min(max(sin(DTOR * lat), -0.9999), 0.9999)
|
||||||
|
|
||||||
# Calculating the pixel y coordinate.
|
# Calculating the pixel y coordinate.
|
||||||
px_y = round(npix + (0.5 * log((1 + fac)/(1 - fac)) * (-1.0 * self._radpp[zoom])))
|
px_y = round(npix + (0.5 * log((1 + fac) / (1 - fac)) * (-1.0 * self._radpp[zoom])))
|
||||||
|
|
||||||
# Returning the pixel x, y to the caller of the function.
|
# Returning the pixel x, y to the caller of the function.
|
||||||
return (px_x, px_y)
|
return (px_x, px_y)
|
||||||
|
@ -116,8 +116,8 @@ class GoogleZoom(object):
|
||||||
|
|
||||||
# Getting the lower-left and upper-right lat/lon coordinates
|
# Getting the lower-left and upper-right lat/lon coordinates
|
||||||
# for the bounding box of the tile.
|
# for the bounding box of the tile.
|
||||||
ll = self.pixel_to_lonlat((px[0]-delta, px[1]-delta), zoom)
|
ll = self.pixel_to_lonlat((px[0] - delta, px[1] - delta), zoom)
|
||||||
ur = self.pixel_to_lonlat((px[0]+delta, px[1]+delta), zoom)
|
ur = self.pixel_to_lonlat((px[0] + delta, px[1] + delta), zoom)
|
||||||
|
|
||||||
# Constructing the Polygon, representing the tile and returning.
|
# Constructing the Polygon, representing the tile and returning.
|
||||||
return Polygon(LinearRing(ll, (ll[0], ur[1]), ur, (ur[0], ll[1]), ll), srid=4326)
|
return Polygon(LinearRing(ll, (ll[0], ur[1]), ur, (ur[0], ll[1]), ll), srid=4326)
|
||||||
|
@ -143,10 +143,10 @@ class GoogleZoom(object):
|
||||||
if (env_w > tile_w) or (env_h > tile_h):
|
if (env_w > tile_w) or (env_h > tile_h):
|
||||||
if z == 0:
|
if z == 0:
|
||||||
raise GoogleMapException('Geometry width and height should not exceed that of the Earth.')
|
raise GoogleMapException('Geometry width and height should not exceed that of the Earth.')
|
||||||
return z-1
|
return z - 1
|
||||||
|
|
||||||
# Otherwise, we've zoomed in to the max.
|
# Otherwise, we've zoomed in to the max.
|
||||||
return self._nzoom-1
|
return self._nzoom - 1
|
||||||
|
|
||||||
def get_width_height(self, extent):
|
def get_width_height(self, extent):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -32,7 +32,7 @@ def index(request, sitemaps):
|
||||||
sites.append('%s://%s%s' % (protocol, current_site.domain, sitemap_url))
|
sites.append('%s://%s%s' % (protocol, current_site.domain, sitemap_url))
|
||||||
|
|
||||||
if pages > 1:
|
if pages > 1:
|
||||||
for page in range(2, pages+1):
|
for page in range(2, pages + 1):
|
||||||
sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page))
|
sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page))
|
||||||
xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
|
xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
|
||||||
return HttpResponse(xml, content_type='application/xml')
|
return HttpResponse(xml, content_type='application/xml')
|
||||||
|
|
|
@ -94,7 +94,7 @@ class DistanceTest(unittest.TestCase):
|
||||||
|
|
||||||
a5 = d1 * D(m=10)
|
a5 = d1 * D(m=10)
|
||||||
self.assertTrue(isinstance(a5, Area))
|
self.assertTrue(isinstance(a5, Area))
|
||||||
self.assertEqual(a5.sq_m, 100*10)
|
self.assertEqual(a5.sq_m, 100 * 10)
|
||||||
|
|
||||||
with self.assertRaises(TypeError):
|
with self.assertRaises(TypeError):
|
||||||
d1 *= D(m=1)
|
d1 *= D(m=1)
|
||||||
|
|
|
@ -600,7 +600,7 @@ class LayerMapping(object):
|
||||||
for i, end in enumerate(indices):
|
for i, end in enumerate(indices):
|
||||||
# Constructing the slice to use for this step; the last slice is
|
# Constructing the slice to use for this step; the last slice is
|
||||||
# special (e.g, [100:] instead of [90:100]).
|
# special (e.g, [100:] instead of [90:100]).
|
||||||
if i+1 == n_i:
|
if i + 1 == n_i:
|
||||||
step_slice = slice(beg, None)
|
step_slice = slice(beg, None)
|
||||||
else:
|
else:
|
||||||
step_slice = slice(beg, end)
|
step_slice = slice(beg, end)
|
||||||
|
|
|
@ -148,7 +148,7 @@ def apnumber(value):
|
||||||
return value
|
return value
|
||||||
if not 0 < value < 10:
|
if not 0 < value < 10:
|
||||||
return value
|
return value
|
||||||
return (_('one'), _('two'), _('three'), _('four'), _('five'), _('six'), _('seven'), _('eight'), _('nine'))[value-1]
|
return (_('one'), _('two'), _('three'), _('four'), _('five'), _('six'), _('seven'), _('eight'), _('nine'))[value - 1]
|
||||||
|
|
||||||
|
|
||||||
# Perform the comparison in the default time zone when USE_TZ = True
|
# Perform the comparison in the default time zone when USE_TZ = True
|
||||||
|
|
|
@ -233,9 +233,9 @@ class BaseCache(object):
|
||||||
if value is None:
|
if value is None:
|
||||||
raise ValueError("Key '%s' not found" % key)
|
raise ValueError("Key '%s' not found" % key)
|
||||||
|
|
||||||
self.set(key, value, version=version+delta)
|
self.set(key, value, version=version + delta)
|
||||||
self.delete(key, version=version)
|
self.delete(key, version=version)
|
||||||
return version+delta
|
return version + delta
|
||||||
|
|
||||||
def decr_version(self, key, delta=1, version=None):
|
def decr_version(self, key, delta=1, version=None):
|
||||||
"""Substracts delta from the cache version for the supplied key. Returns
|
"""Substracts delta from the cache version for the supplied key. Returns
|
||||||
|
|
|
@ -11,7 +11,7 @@ from django.utils.encoding import force_bytes, python_2_unicode_compatible
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class File(FileProxyMixin):
|
class File(FileProxyMixin):
|
||||||
DEFAULT_CHUNK_SIZE = 64 * 2**10
|
DEFAULT_CHUNK_SIZE = 64 * 2 ** 10
|
||||||
|
|
||||||
def __init__(self, file, name=None):
|
def __init__(self, file, name=None):
|
||||||
self.file = file
|
self.file = file
|
||||||
|
|
|
@ -65,7 +65,7 @@ def get_image_dimensions(file_or_path, close=False):
|
||||||
raise
|
raise
|
||||||
if p.image:
|
if p.image:
|
||||||
return p.image.size
|
return p.image.size
|
||||||
chunk_size = chunk_size*2
|
chunk_size *= 2
|
||||||
return None
|
return None
|
||||||
finally:
|
finally:
|
||||||
if close:
|
if close:
|
||||||
|
|
|
@ -38,7 +38,7 @@ def _samefile(src, dst):
|
||||||
os.path.normcase(os.path.abspath(dst)))
|
os.path.normcase(os.path.abspath(dst)))
|
||||||
|
|
||||||
|
|
||||||
def file_move_safe(old_file_name, new_file_name, chunk_size=1024*64, allow_overwrite=False):
|
def file_move_safe(old_file_name, new_file_name, chunk_size=1024 * 64, allow_overwrite=False):
|
||||||
"""
|
"""
|
||||||
Moves a file from one location to another in the safest way possible.
|
Moves a file from one location to another in the safest way possible.
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ class UploadedFile(File):
|
||||||
An ``UploadedFile`` object behaves somewhat like a file object and
|
An ``UploadedFile`` object behaves somewhat like a file object and
|
||||||
represents some file data that the user submitted with a form.
|
represents some file data that the user submitted with a form.
|
||||||
"""
|
"""
|
||||||
DEFAULT_CHUNK_SIZE = 64 * 2**10
|
DEFAULT_CHUNK_SIZE = 64 * 2 ** 10
|
||||||
|
|
||||||
def __init__(self, file=None, name=None, content_type=None, size=None, charset=None, content_type_extra=None):
|
def __init__(self, file=None, name=None, content_type=None, size=None, charset=None, content_type_extra=None):
|
||||||
super(UploadedFile, self).__init__(file, name)
|
super(UploadedFile, self).__init__(file, name)
|
||||||
|
|
|
@ -317,7 +317,7 @@ class ManagementUtility(object):
|
||||||
cword = int(os.environ['COMP_CWORD'])
|
cword = int(os.environ['COMP_CWORD'])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
curr = cwords[cword-1]
|
curr = cwords[cword - 1]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
curr = ''
|
curr = ''
|
||||||
|
|
||||||
|
@ -350,7 +350,7 @@ class ManagementUtility(object):
|
||||||
options += [(s_opt.get_opt_string(), s_opt.nargs) for s_opt in
|
options += [(s_opt.get_opt_string(), s_opt.nargs) for s_opt in
|
||||||
subcommand_cls.option_list]
|
subcommand_cls.option_list]
|
||||||
# filter out previously specified options from available options
|
# filter out previously specified options from available options
|
||||||
prev_opts = [x.split('=')[0] for x in cwords[1:cword-1]]
|
prev_opts = [x.split('=')[0] for x in cwords[1:cword - 1]]
|
||||||
options = [opt for opt in options if opt[0] not in prev_opts]
|
options = [opt for opt in options if opt[0] not in prev_opts]
|
||||||
|
|
||||||
# filter options by current input
|
# filter options by current input
|
||||||
|
|
|
@ -69,7 +69,7 @@ class Command(BaseCommand):
|
||||||
table_output.append(" ".join(field_output))
|
table_output.append(" ".join(field_output))
|
||||||
full_statement = ["CREATE TABLE %s (" % qn(tablename)]
|
full_statement = ["CREATE TABLE %s (" % qn(tablename)]
|
||||||
for i, line in enumerate(table_output):
|
for i, line in enumerate(table_output):
|
||||||
full_statement.append(' %s%s' % (line, ',' if i < len(table_output)-1 else ''))
|
full_statement.append(' %s%s' % (line, ',' if i < len(table_output) - 1 else ''))
|
||||||
full_statement.append(');')
|
full_statement.append(');')
|
||||||
with transaction.commit_on_success_unless_managed():
|
with transaction.commit_on_success_unless_managed():
|
||||||
curs = connection.cursor()
|
curs = connection.cursor()
|
||||||
|
|
|
@ -147,7 +147,7 @@ def get_mod_func(callback):
|
||||||
dot = callback.rindex('.')
|
dot = callback.rindex('.')
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return callback, ''
|
return callback, ''
|
||||||
return callback[:dot], callback[dot+1:]
|
return callback[:dot], callback[dot + 1:]
|
||||||
|
|
||||||
|
|
||||||
class LocaleRegexProvider(object):
|
class LocaleRegexProvider(object):
|
||||||
|
|
|
@ -33,7 +33,7 @@ class SeparateDatabaseAndState(Operation):
|
||||||
base_state = to_state
|
base_state = to_state
|
||||||
for pos, database_operation in enumerate(reversed(self.database_operations)):
|
for pos, database_operation in enumerate(reversed(self.database_operations)):
|
||||||
to_state = base_state.clone()
|
to_state = base_state.clone()
|
||||||
for dbop in self.database_operations[:-(pos+1)]:
|
for dbop in self.database_operations[:-(pos + 1)]:
|
||||||
dbop.state_forwards(app_label, to_state)
|
dbop.state_forwards(app_label, to_state)
|
||||||
from_state = base_state.clone()
|
from_state = base_state.clone()
|
||||||
database_operation.state_forwards(app_label, from_state)
|
database_operation.state_forwards(app_label, from_state)
|
||||||
|
|
|
@ -48,13 +48,13 @@ class MigrationOptimizer(object):
|
||||||
new_operations = []
|
new_operations = []
|
||||||
for i, operation in enumerate(operations):
|
for i, operation in enumerate(operations):
|
||||||
# Compare it to each operation after it
|
# Compare it to each operation after it
|
||||||
for j, other in enumerate(operations[i+1:]):
|
for j, other in enumerate(operations[i + 1:]):
|
||||||
result = self.reduce(operation, other)
|
result = self.reduce(operation, other)
|
||||||
if result is not None:
|
if result is not None:
|
||||||
# Optimize! Add result, then remaining others, then return
|
# Optimize! Add result, then remaining others, then return
|
||||||
new_operations.extend(result)
|
new_operations.extend(result)
|
||||||
new_operations.extend(operations[i+1:i+1+j])
|
new_operations.extend(operations[i + 1:i + 1 + j])
|
||||||
new_operations.extend(operations[i+j+2:])
|
new_operations.extend(operations[i + j + 2:])
|
||||||
return new_operations
|
return new_operations
|
||||||
if not self.can_optimize_through(operation, other, app_label):
|
if not self.can_optimize_through(operation, other, app_label):
|
||||||
new_operations.append(operation)
|
new_operations.append(operation)
|
||||||
|
|
|
@ -1359,7 +1359,7 @@ def get_klass_info(klass, max_depth=0, cur_depth=0, requested=None,
|
||||||
next = requested[f.name]
|
next = requested[f.name]
|
||||||
else:
|
else:
|
||||||
next = None
|
next = None
|
||||||
klass_info = get_klass_info(f.rel.to, max_depth=max_depth, cur_depth=cur_depth+1,
|
klass_info = get_klass_info(f.rel.to, max_depth=max_depth, cur_depth=cur_depth + 1,
|
||||||
requested=next, only_load=only_load)
|
requested=next, only_load=only_load)
|
||||||
related_fields.append((f, klass_info))
|
related_fields.append((f, klass_info))
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ class SelectDateWidget(Widget):
|
||||||
self.years = years
|
self.years = years
|
||||||
else:
|
else:
|
||||||
this_year = datetime.date.today().year
|
this_year = datetime.date.today().year
|
||||||
self.years = range(this_year, this_year+10)
|
self.years = range(this_year, this_year + 10)
|
||||||
|
|
||||||
# Optional dict of months to use in the "month" select box.
|
# Optional dict of months to use in the "month" select box.
|
||||||
if months:
|
if months:
|
||||||
|
|
|
@ -363,7 +363,7 @@ class BaseFormSet(object):
|
||||||
if self.can_order:
|
if self.can_order:
|
||||||
# Only pre-fill the ordering field for initial forms.
|
# Only pre-fill the ordering field for initial forms.
|
||||||
if index is not None and index < self.initial_form_count():
|
if index is not None and index < self.initial_form_count():
|
||||||
form.fields[ORDERING_FIELD_NAME] = IntegerField(label=_('Order'), initial=index+1, required=False)
|
form.fields[ORDERING_FIELD_NAME] = IntegerField(label=_('Order'), initial=index + 1, required=False)
|
||||||
else:
|
else:
|
||||||
form.fields[ORDERING_FIELD_NAME] = IntegerField(label=_('Order'), required=False)
|
form.fields[ORDERING_FIELD_NAME] = IntegerField(label=_('Order'), required=False)
|
||||||
if self.can_delete:
|
if self.can_delete:
|
||||||
|
|
|
@ -572,7 +572,7 @@ class BaseModelFormSet(BaseFormSet):
|
||||||
if i >= self.initial_form_count() and self.initial_extra:
|
if i >= self.initial_form_count() and self.initial_extra:
|
||||||
# Set initial values for extra forms
|
# Set initial values for extra forms
|
||||||
try:
|
try:
|
||||||
kwargs['initial'] = self.initial_extra[i-self.initial_form_count()]
|
kwargs['initial'] = self.initial_extra[i - self.initial_form_count()]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pass
|
pass
|
||||||
return super(BaseModelFormSet, self)._construct_form(i, **kwargs)
|
return super(BaseModelFormSet, self)._construct_form(i, **kwargs)
|
||||||
|
|
|
@ -94,7 +94,7 @@ class MultiPartParser(object):
|
||||||
# For compatibility with low-level network APIs (with 32-bit integers),
|
# For compatibility with low-level network APIs (with 32-bit integers),
|
||||||
# the chunk size should be < 2^31, but still divisible by 4.
|
# the chunk size should be < 2^31, but still divisible by 4.
|
||||||
possible_sizes = [x.chunk_size for x in upload_handlers if x.chunk_size]
|
possible_sizes = [x.chunk_size for x in upload_handlers if x.chunk_size]
|
||||||
self._chunk_size = min([2**31-4] + possible_sizes)
|
self._chunk_size = min([2 ** 31 - 4] + possible_sizes)
|
||||||
|
|
||||||
self._meta = META
|
self._meta = META
|
||||||
self._encoding = encoding or settings.DEFAULT_CHARSET
|
self._encoding = encoding or settings.DEFAULT_CHARSET
|
||||||
|
@ -267,7 +267,7 @@ class MultiPartParser(object):
|
||||||
|
|
||||||
def IE_sanitize(self, filename):
|
def IE_sanitize(self, filename):
|
||||||
"""Cleanup filename from Internet Explorer full paths."""
|
"""Cleanup filename from Internet Explorer full paths."""
|
||||||
return filename and filename[filename.rfind("\\")+1:].strip()
|
return filename and filename[filename.rfind("\\") + 1:].strip()
|
||||||
|
|
||||||
|
|
||||||
class LazyStream(six.Iterator):
|
class LazyStream(six.Iterator):
|
||||||
|
@ -512,11 +512,11 @@ class BoundaryIter(six.Iterator):
|
||||||
end = index
|
end = index
|
||||||
next = index + len(self._boundary)
|
next = index + len(self._boundary)
|
||||||
# backup over CRLF
|
# backup over CRLF
|
||||||
last = max(0, end-1)
|
last = max(0, end - 1)
|
||||||
if data[last:last+1] == b'\n':
|
if data[last:last + 1] == b'\n':
|
||||||
end -= 1
|
end -= 1
|
||||||
last = max(0, end-1)
|
last = max(0, end - 1)
|
||||||
if data[last:last+1] == b'\r':
|
if data[last:last + 1] == b'\r':
|
||||||
end -= 1
|
end -= 1
|
||||||
return end, next
|
return end, next
|
||||||
|
|
||||||
|
@ -623,7 +623,7 @@ def parse_header(line):
|
||||||
i = p.find(b'=')
|
i = p.find(b'=')
|
||||||
if i >= 0:
|
if i >= 0:
|
||||||
name = p[:i].strip().lower().decode('ascii')
|
name = p[:i].strip().lower().decode('ascii')
|
||||||
value = p[i+1:].strip()
|
value = p[i + 1:].strip()
|
||||||
if len(value) >= 2 and value[:1] == value[-1:] == b'"':
|
if len(value) >= 2 and value[:1] == value[-1:] == b'"':
|
||||||
value = value[1:-1]
|
value = value[1:-1]
|
||||||
value = value.replace(b'\\\\', b'\\').replace(b'\\"', b'"')
|
value = value.replace(b'\\\\', b'\\').replace(b'\\"', b'"')
|
||||||
|
|
|
@ -680,14 +680,14 @@ def unordered_list(value, autoescape=None):
|
||||||
sublist_item = title
|
sublist_item = title
|
||||||
title = ''
|
title = ''
|
||||||
elif i < list_length - 1:
|
elif i < list_length - 1:
|
||||||
next_item = list_[i+1]
|
next_item = list_[i + 1]
|
||||||
if next_item and isinstance(next_item, (list, tuple)):
|
if next_item and isinstance(next_item, (list, tuple)):
|
||||||
# The next item is a sub-list.
|
# The next item is a sub-list.
|
||||||
sublist_item = next_item
|
sublist_item = next_item
|
||||||
# We've processed the next item now too.
|
# We've processed the next item now too.
|
||||||
i += 1
|
i += 1
|
||||||
if sublist_item:
|
if sublist_item:
|
||||||
sublist = _helper(sublist_item, tabs+1)
|
sublist = _helper(sublist_item, tabs + 1)
|
||||||
sublist = '\n%s<ul>\n%s\n%s</ul>\n%s' % (indent, sublist,
|
sublist = '\n%s<ul>\n%s\n%s</ul>\n%s' % (indent, sublist,
|
||||||
indent, indent)
|
indent, indent)
|
||||||
output.append('%s<li>%s%s</li>' % (indent,
|
output.append('%s<li>%s%s</li>' % (indent,
|
||||||
|
|
|
@ -171,7 +171,7 @@ class ForNode(Node):
|
||||||
for i, item in enumerate(values):
|
for i, item in enumerate(values):
|
||||||
# Shortcuts for current loop iteration number.
|
# Shortcuts for current loop iteration number.
|
||||||
loop_dict['counter0'] = i
|
loop_dict['counter0'] = i
|
||||||
loop_dict['counter'] = i+1
|
loop_dict['counter'] = i + 1
|
||||||
# Reverse counter iteration numbers.
|
# Reverse counter iteration numbers.
|
||||||
loop_dict['revcounter'] = len_values - i
|
loop_dict['revcounter'] = len_values - i
|
||||||
loop_dict['revcounter0'] = len_values - i - 1
|
loop_dict['revcounter0'] = len_values - i - 1
|
||||||
|
@ -832,7 +832,7 @@ def do_for(parser, token):
|
||||||
raise TemplateSyntaxError("'for' tag received an invalid argument:"
|
raise TemplateSyntaxError("'for' tag received an invalid argument:"
|
||||||
" %s" % token.contents)
|
" %s" % token.contents)
|
||||||
|
|
||||||
sequence = parser.compile_filter(bits[in_index+1])
|
sequence = parser.compile_filter(bits[in_index + 1])
|
||||||
nodelist_loop = parser.parse(('empty', 'endfor',))
|
nodelist_loop = parser.parse(('empty', 'endfor',))
|
||||||
token = parser.next_token()
|
token = parser.next_token()
|
||||||
if token.contents == 'empty':
|
if token.contents == 'empty':
|
||||||
|
|
|
@ -158,7 +158,7 @@ class IfParser(object):
|
||||||
i = 0
|
i = 0
|
||||||
while i < l:
|
while i < l:
|
||||||
token = tokens[i]
|
token = tokens[i]
|
||||||
if token == "not" and i + 1 < l and tokens[i+1] == "in":
|
if token == "not" and i + 1 < l and tokens[i + 1] == "in":
|
||||||
token = "not in"
|
token = "not in"
|
||||||
i += 1 # skip 'in'
|
i += 1 # skip 'in'
|
||||||
mapped_tokens.append(self.translate_token(token))
|
mapped_tokens.append(self.translate_token(token))
|
||||||
|
|
|
@ -203,10 +203,10 @@ def reorder_suite(suite, classes):
|
||||||
"""
|
"""
|
||||||
class_count = len(classes)
|
class_count = len(classes)
|
||||||
suite_class = type(suite)
|
suite_class = type(suite)
|
||||||
bins = [suite_class() for i in range(class_count+1)]
|
bins = [suite_class() for i in range(class_count + 1)]
|
||||||
partition_suite(suite, classes, bins)
|
partition_suite(suite, classes, bins)
|
||||||
for i in range(class_count):
|
for i in range(class_count):
|
||||||
bins[0].addTests(bins[i+1])
|
bins[0].addTests(bins[i + 1])
|
||||||
return bins[0]
|
return bins[0]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -303,7 +303,7 @@ class DateFormat(TimeFormat):
|
||||||
weekday = self.data.weekday() + 1
|
weekday = self.data.weekday() + 1
|
||||||
day_of_year = self.z()
|
day_of_year = self.z()
|
||||||
if day_of_year <= (8 - jan1_weekday) and jan1_weekday > 4:
|
if day_of_year <= (8 - jan1_weekday) and jan1_weekday > 4:
|
||||||
if jan1_weekday == 5 or (jan1_weekday == 6 and calendar.isleap(self.data.year-1)):
|
if jan1_weekday == 5 or (jan1_weekday == 6 and calendar.isleap(self.data.year - 1)):
|
||||||
week_number = 53
|
week_number = 53
|
||||||
else:
|
else:
|
||||||
week_number = 52
|
week_number = 52
|
||||||
|
|
|
@ -83,8 +83,8 @@ def strftime(dt, fmt):
|
||||||
s1 = time.strftime(fmt, (year,) + timetuple[1:])
|
s1 = time.strftime(fmt, (year,) + timetuple[1:])
|
||||||
sites1 = _findall(s1, str(year))
|
sites1 = _findall(s1, str(year))
|
||||||
|
|
||||||
s2 = time.strftime(fmt, (year+28,) + timetuple[1:])
|
s2 = time.strftime(fmt, (year + 28,) + timetuple[1:])
|
||||||
sites2 = _findall(s2, str(year+28))
|
sites2 = _findall(s2, str(year + 28))
|
||||||
|
|
||||||
sites = []
|
sites = []
|
||||||
for site in sites1:
|
for site in sites1:
|
||||||
|
@ -94,5 +94,5 @@ def strftime(dt, fmt):
|
||||||
s = s1
|
s = s1
|
||||||
syear = "%04d" % (dt.year,)
|
syear = "%04d" % (dt.year,)
|
||||||
for site in sites:
|
for site in sites:
|
||||||
s = s[:site] + syear + s[site+4:]
|
s = s[:site] + syear + s[site + 4:]
|
||||||
return s
|
return s
|
||||||
|
|
|
@ -25,7 +25,7 @@ def literals(choices, prefix="", suffix=""):
|
||||||
individually.
|
individually.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return "|".join(prefix+re.escape(c)+suffix for c in choices.split())
|
return "|".join(prefix + re.escape(c) + suffix for c in choices.split())
|
||||||
|
|
||||||
|
|
||||||
class Lexer(object):
|
class Lexer(object):
|
||||||
|
|
|
@ -59,7 +59,7 @@ gettext_noop = gettext_lazy = _ = gettext
|
||||||
def to_locale(language):
|
def to_locale(language):
|
||||||
p = language.find('-')
|
p = language.find('-')
|
||||||
if p >= 0:
|
if p >= 0:
|
||||||
return language[:p].lower()+'_'+language[p+1:].upper()
|
return language[:p].lower() + '_' + language[p + 1:].upper()
|
||||||
else:
|
else:
|
||||||
return language.lower()
|
return language.lower()
|
||||||
|
|
||||||
|
|
|
@ -55,12 +55,12 @@ def to_locale(language, to_lower=False):
|
||||||
p = language.find('-')
|
p = language.find('-')
|
||||||
if p >= 0:
|
if p >= 0:
|
||||||
if to_lower:
|
if to_lower:
|
||||||
return language[:p].lower()+'_'+language[p+1:].lower()
|
return language[:p].lower() + '_' + language[p + 1:].lower()
|
||||||
else:
|
else:
|
||||||
# Get correct locale for sr-latn
|
# Get correct locale for sr-latn
|
||||||
if len(language[p+1:]) > 2:
|
if len(language[p + 1:]) > 2:
|
||||||
return language[:p].lower()+'_'+language[p+1].upper()+language[p+2:].lower()
|
return language[:p].lower() + '_' + language[p + 1].upper() + language[p + 2:].lower()
|
||||||
return language[:p].lower()+'_'+language[p+1:].upper()
|
return language[:p].lower() + '_' + language[p + 1:].upper()
|
||||||
else:
|
else:
|
||||||
return language.lower()
|
return language.lower()
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ def to_language(locale):
|
||||||
"""Turns a locale name (en_US) into a language name (en-us)."""
|
"""Turns a locale name (en_US) into a language name (en-us)."""
|
||||||
p = locale.find('_')
|
p = locale.find('_')
|
||||||
if p >= 0:
|
if p >= 0:
|
||||||
return locale[:p].lower()+'-'+locale[p+1:].lower()
|
return locale[:p].lower() + '-' + locale[p + 1:].lower()
|
||||||
else:
|
else:
|
||||||
return locale.lower()
|
return locale.lower()
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@ def linebreak_iter(template_source):
|
||||||
yield 0
|
yield 0
|
||||||
p = template_source.find('\n')
|
p = template_source.find('\n')
|
||||||
while p >= 0:
|
while p >= 0:
|
||||||
yield p+1
|
yield p + 1
|
||||||
p = template_source.find('\n', p+1)
|
p = template_source.find('\n', p + 1)
|
||||||
yield len(template_source) + 1
|
yield len(template_source) + 1
|
||||||
|
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ class ExceptionReporter(object):
|
||||||
end = getattr(self.exc_value, 'end', None)
|
end = getattr(self.exc_value, 'end', None)
|
||||||
if start is not None and end is not None:
|
if start is not None and end is not None:
|
||||||
unicode_str = self.exc_value.args[1]
|
unicode_str = self.exc_value.args[1]
|
||||||
unicode_hint = smart_text(unicode_str[max(start-5, 0):min(end+5, len(unicode_str))], 'ascii', errors='replace')
|
unicode_hint = smart_text(unicode_str[max(start - 5, 0):min(end + 5, len(unicode_str))], 'ascii', errors='replace')
|
||||||
from django import get_version
|
from django import get_version
|
||||||
c = {
|
c = {
|
||||||
'is_email': self.is_email,
|
'is_email': self.is_email,
|
||||||
|
@ -419,7 +419,7 @@ class ExceptionReporter(object):
|
||||||
|
|
||||||
pre_context = source[lower_bound:lineno]
|
pre_context = source[lower_bound:lineno]
|
||||||
context_line = source[lineno]
|
context_line = source[lineno]
|
||||||
post_context = source[lineno+1:upper_bound]
|
post_context = source[lineno + 1:upper_bound]
|
||||||
|
|
||||||
return lower_bound, pre_context, context_line, post_context
|
return lower_bound, pre_context, context_line, post_context
|
||||||
|
|
||||||
|
|
|
@ -68,8 +68,8 @@ def fixliterals(fname):
|
||||||
new.append(m.group(0))
|
new.append(m.group(0))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
sys.stdout.write("\n"+"-"*80+"\n")
|
sys.stdout.write("\n" + "-" * 80 + "\n")
|
||||||
sys.stdout.write(data[prev_start+1:m.start()])
|
sys.stdout.write(data[prev_start + 1:m.start()])
|
||||||
sys.stdout.write(colorize(m.group(0), fg="red"))
|
sys.stdout.write(colorize(m.group(0), fg="red"))
|
||||||
sys.stdout.write(data[m.end():next_end])
|
sys.stdout.write(data[m.end():next_end])
|
||||||
sys.stdout.write("\n\n")
|
sys.stdout.write("\n\n")
|
||||||
|
|
|
@ -161,7 +161,7 @@ def make_template_info(filename, root_dirs):
|
||||||
relative_filenames from the supplied filename and root template directories
|
relative_filenames from the supplied filename and root template directories
|
||||||
"""
|
"""
|
||||||
return Template(filename,
|
return Template(filename,
|
||||||
[filename[len(d)+1:] for d in root_dirs if filename.startswith(d)])
|
[filename[len(d) + 1:] for d in root_dirs if filename.startswith(d)])
|
||||||
|
|
||||||
|
|
||||||
class Template(object):
|
class Template(object):
|
||||||
|
|
|
@ -4,7 +4,7 @@ install-script = scripts/rpm-install.sh
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
exclude=./django/utils/dictconfig.py,./django/contrib/comments/*,./django/utils/unittest.py,./tests/comment_tests/*,./django/test/_doctest.py,./django/utils/six.py,./django/conf/app_template/*
|
exclude=./django/utils/dictconfig.py,./django/contrib/comments/*,./django/utils/unittest.py,./tests/comment_tests/*,./django/test/_doctest.py,./django/utils/six.py,./django/conf/app_template/*
|
||||||
ignore=E124,E125,E127,E128,E226,E251,E501,W601
|
ignore=E124,E125,E127,E128,E251,E501,W601
|
||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
license-file = LICENSE
|
license-file = LICENSE
|
||||||
|
|
|
@ -61,7 +61,7 @@ class DecadeListFilterWithNoneReturningLookups(DecadeListFilterWithTitleAndParam
|
||||||
class DecadeListFilterWithFailingQueryset(DecadeListFilterWithTitleAndParameter):
|
class DecadeListFilterWithFailingQueryset(DecadeListFilterWithTitleAndParameter):
|
||||||
|
|
||||||
def queryset(self, request, queryset):
|
def queryset(self, request, queryset):
|
||||||
raise 1/0
|
raise 1 / 0
|
||||||
|
|
||||||
|
|
||||||
class DecadeListFilterWithQuerysetBasedLookups(DecadeListFilterWithTitleAndParameter):
|
class DecadeListFilterWithQuerysetBasedLookups(DecadeListFilterWithTitleAndParameter):
|
||||||
|
|
|
@ -346,7 +346,7 @@ class AggregationTests(TestCase):
|
||||||
def test_aggregate_fexpr(self):
|
def test_aggregate_fexpr(self):
|
||||||
# Aggregates can be used with F() expressions
|
# Aggregates can be used with F() expressions
|
||||||
# ... where the F() is pushed into the HAVING clause
|
# ... where the F() is pushed into the HAVING clause
|
||||||
qs = Publisher.objects.annotate(num_books=Count('book')).filter(num_books__lt=F('num_awards')/2).order_by('name').values('name', 'num_books', 'num_awards')
|
qs = Publisher.objects.annotate(num_books=Count('book')).filter(num_books__lt=F('num_awards') / 2).order_by('name').values('name', 'num_books', 'num_awards')
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
qs, [
|
qs, [
|
||||||
{'num_books': 1, 'name': 'Morgan Kaufmann', 'num_awards': 9},
|
{'num_books': 1, 'name': 'Morgan Kaufmann', 'num_awards': 9},
|
||||||
|
@ -355,7 +355,7 @@ class AggregationTests(TestCase):
|
||||||
lambda p: p,
|
lambda p: p,
|
||||||
)
|
)
|
||||||
|
|
||||||
qs = Publisher.objects.annotate(num_books=Count('book')).exclude(num_books__lt=F('num_awards')/2).order_by('name').values('name', 'num_books', 'num_awards')
|
qs = Publisher.objects.annotate(num_books=Count('book')).exclude(num_books__lt=F('num_awards') / 2).order_by('name').values('name', 'num_books', 'num_awards')
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
qs, [
|
qs, [
|
||||||
{'num_books': 2, 'name': 'Apress', 'num_awards': 3},
|
{'num_books': 2, 'name': 'Apress', 'num_awards': 3},
|
||||||
|
@ -366,7 +366,7 @@ class AggregationTests(TestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
# ... and where the F() references an aggregate
|
# ... and where the F() references an aggregate
|
||||||
qs = Publisher.objects.annotate(num_books=Count('book')).filter(num_awards__gt=2*F('num_books')).order_by('name').values('name', 'num_books', 'num_awards')
|
qs = Publisher.objects.annotate(num_books=Count('book')).filter(num_awards__gt=2 * F('num_books')).order_by('name').values('name', 'num_books', 'num_awards')
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
qs, [
|
qs, [
|
||||||
{'num_books': 1, 'name': 'Morgan Kaufmann', 'num_awards': 9},
|
{'num_books': 1, 'name': 'Morgan Kaufmann', 'num_awards': 9},
|
||||||
|
@ -375,7 +375,7 @@ class AggregationTests(TestCase):
|
||||||
lambda p: p,
|
lambda p: p,
|
||||||
)
|
)
|
||||||
|
|
||||||
qs = Publisher.objects.annotate(num_books=Count('book')).exclude(num_books__lt=F('num_awards')/2).order_by('name').values('name', 'num_books', 'num_awards')
|
qs = Publisher.objects.annotate(num_books=Count('book')).exclude(num_books__lt=F('num_awards') / 2).order_by('name').values('name', 'num_books', 'num_awards')
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
qs, [
|
qs, [
|
||||||
{'num_books': 2, 'name': 'Apress', 'num_awards': 3},
|
{'num_books': 2, 'name': 'Apress', 'num_awards': 3},
|
||||||
|
|
|
@ -94,7 +94,7 @@ class BulkCreateTests(TestCase):
|
||||||
with override_settings(DEBUG=True):
|
with override_settings(DEBUG=True):
|
||||||
connection.queries = []
|
connection.queries = []
|
||||||
TwoFields.objects.bulk_create([
|
TwoFields.objects.bulk_create([
|
||||||
TwoFields(f1=i, f2=i+1) for i in range(0, 1001)
|
TwoFields(f1=i, f2=i + 1) for i in range(0, 1001)
|
||||||
])
|
])
|
||||||
self.assertEqual(TwoFields.objects.count(), 1001)
|
self.assertEqual(TwoFields.objects.count(), 1001)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
@ -115,7 +115,7 @@ class BulkCreateTests(TestCase):
|
||||||
with override_settings(DEBUG=True):
|
with override_settings(DEBUG=True):
|
||||||
connection.queries = []
|
connection.queries = []
|
||||||
TwoFields.objects.bulk_create([
|
TwoFields.objects.bulk_create([
|
||||||
TwoFields(f1=i, f2=i+1) for i in range(0, 1001)
|
TwoFields(f1=i, f2=i + 1) for i in range(0, 1001)
|
||||||
])
|
])
|
||||||
self.assertTrue(len(connection.queries) < 10)
|
self.assertTrue(len(connection.queries) < 10)
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ class BulkCreateTests(TestCase):
|
||||||
with override_settings(DEBUG=True):
|
with override_settings(DEBUG=True):
|
||||||
connection.queries = []
|
connection.queries = []
|
||||||
TwoFields.objects.bulk_create([
|
TwoFields.objects.bulk_create([
|
||||||
TwoFields(id=i if i % 2 == 0 else None, f1=i, f2=i+1)
|
TwoFields(id=i if i % 2 == 0 else None, f1=i, f2=i + 1)
|
||||||
for i in range(100000, 101000)])
|
for i in range(100000, 101000)])
|
||||||
self.assertEqual(TwoFields.objects.count(), 1000)
|
self.assertEqual(TwoFields.objects.count(), 1000)
|
||||||
# We can't assume much about the ID's created, except that the above
|
# We can't assume much about the ID's created, except that the above
|
||||||
|
@ -145,7 +145,7 @@ class BulkCreateTests(TestCase):
|
||||||
with override_settings(DEBUG=True):
|
with override_settings(DEBUG=True):
|
||||||
connection.queries = []
|
connection.queries = []
|
||||||
TwoFields.objects.bulk_create([
|
TwoFields.objects.bulk_create([
|
||||||
TwoFields(id=i if i % 2 == 0 else None, f1=i, f2=i+1)
|
TwoFields(id=i if i % 2 == 0 else None, f1=i, f2=i + 1)
|
||||||
for i in range(100000, 101000)])
|
for i in range(100000, 101000)])
|
||||||
self.assertTrue(len(connection.queries) < 10)
|
self.assertTrue(len(connection.queries) < 10)
|
||||||
|
|
||||||
|
|
|
@ -436,13 +436,13 @@ class BaseCacheTests(object):
|
||||||
it is an absolute expiration timestamp instead of a relative
|
it is an absolute expiration timestamp instead of a relative
|
||||||
offset. Test that we honour this convention. Refs #12399.
|
offset. Test that we honour this convention. Refs #12399.
|
||||||
'''
|
'''
|
||||||
self.cache.set('key1', 'eggs', 60*60*24*30 + 1) # 30 days + 1 second
|
self.cache.set('key1', 'eggs', 60 * 60 * 24 * 30 + 1) # 30 days + 1 second
|
||||||
self.assertEqual(self.cache.get('key1'), 'eggs')
|
self.assertEqual(self.cache.get('key1'), 'eggs')
|
||||||
|
|
||||||
self.cache.add('key2', 'ham', 60*60*24*30 + 1)
|
self.cache.add('key2', 'ham', 60 * 60 * 24 * 30 + 1)
|
||||||
self.assertEqual(self.cache.get('key2'), 'ham')
|
self.assertEqual(self.cache.get('key2'), 'ham')
|
||||||
|
|
||||||
self.cache.set_many({'key3': 'sausage', 'key4': 'lobster bisque'}, 60*60*24*30 + 1)
|
self.cache.set_many({'key3': 'sausage', 'key4': 'lobster bisque'}, 60 * 60 * 24 * 30 + 1)
|
||||||
self.assertEqual(self.cache.get('key3'), 'sausage')
|
self.assertEqual(self.cache.get('key3'), 'sausage')
|
||||||
self.assertEqual(self.cache.get('key4'), 'lobster bisque')
|
self.assertEqual(self.cache.get('key4'), 'lobster bisque')
|
||||||
|
|
||||||
|
@ -1000,7 +1000,7 @@ class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
|
||||||
"""incr/decr does not modify expiry time (matches memcached behavior)"""
|
"""incr/decr does not modify expiry time (matches memcached behavior)"""
|
||||||
key = 'value'
|
key = 'value'
|
||||||
_key = self.cache.make_key(key)
|
_key = self.cache.make_key(key)
|
||||||
self.cache.set(key, 1, timeout=self.cache.default_timeout*10)
|
self.cache.set(key, 1, timeout=self.cache.default_timeout * 10)
|
||||||
expire = self.cache._expire_info[_key]
|
expire = self.cache._expire_info[_key]
|
||||||
self.cache.incr(key)
|
self.cache.incr(key)
|
||||||
self.assertEqual(expire, self.cache._expire_info[_key])
|
self.assertEqual(expire, self.cache._expire_info[_key])
|
||||||
|
|
|
@ -613,15 +613,15 @@ class DefaultFiltersTests(TestCase):
|
||||||
# NOTE: \xa0 avoids wrapping between value and unit
|
# NOTE: \xa0 avoids wrapping between value and unit
|
||||||
self.assertEqual(filesizeformat(1023), '1023\xa0bytes')
|
self.assertEqual(filesizeformat(1023), '1023\xa0bytes')
|
||||||
self.assertEqual(filesizeformat(1024), '1.0\xa0KB')
|
self.assertEqual(filesizeformat(1024), '1.0\xa0KB')
|
||||||
self.assertEqual(filesizeformat(10*1024), '10.0\xa0KB')
|
self.assertEqual(filesizeformat(10 * 1024), '10.0\xa0KB')
|
||||||
self.assertEqual(filesizeformat(1024*1024-1), '1024.0\xa0KB')
|
self.assertEqual(filesizeformat(1024 * 1024 - 1), '1024.0\xa0KB')
|
||||||
self.assertEqual(filesizeformat(1024*1024), '1.0\xa0MB')
|
self.assertEqual(filesizeformat(1024 * 1024), '1.0\xa0MB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*50), '50.0\xa0MB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 50), '50.0\xa0MB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024-1), '1024.0\xa0MB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024 - 1), '1024.0\xa0MB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024), '1.0\xa0GB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024), '1.0\xa0GB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024*1024), '1.0\xa0TB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024 * 1024), '1.0\xa0TB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024*1024*1024), '1.0\xa0PB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024 * 1024 * 1024), '1.0\xa0PB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024 * 1024 * 1024 * 2000),
|
||||||
'2000.0\xa0PB')
|
'2000.0\xa0PB')
|
||||||
self.assertEqual(filesizeformat(complex(1, -1)), '0\xa0bytes')
|
self.assertEqual(filesizeformat(complex(1, -1)), '0\xa0bytes')
|
||||||
self.assertEqual(filesizeformat(""), '0\xa0bytes')
|
self.assertEqual(filesizeformat(""), '0\xa0bytes')
|
||||||
|
@ -680,16 +680,16 @@ class DefaultFiltersI18NTests(TransRealMixin, TestCase):
|
||||||
with self.settings(USE_L10N=True), translation.override('de', deactivate=True):
|
with self.settings(USE_L10N=True), translation.override('de', deactivate=True):
|
||||||
self.assertEqual(filesizeformat(1023), '1023\xa0Bytes')
|
self.assertEqual(filesizeformat(1023), '1023\xa0Bytes')
|
||||||
self.assertEqual(filesizeformat(1024), '1,0\xa0KB')
|
self.assertEqual(filesizeformat(1024), '1,0\xa0KB')
|
||||||
self.assertEqual(filesizeformat(10*1024), '10,0\xa0KB')
|
self.assertEqual(filesizeformat(10 * 1024), '10,0\xa0KB')
|
||||||
self.assertEqual(filesizeformat(1024*1024-1), '1024,0\xa0KB')
|
self.assertEqual(filesizeformat(1024 * 1024 - 1), '1024,0\xa0KB')
|
||||||
self.assertEqual(filesizeformat(1024*1024), '1,0\xa0MB')
|
self.assertEqual(filesizeformat(1024 * 1024), '1,0\xa0MB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*50), '50,0\xa0MB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 50), '50,0\xa0MB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024-1), '1024,0\xa0MB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024 - 1), '1024,0\xa0MB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024), '1,0\xa0GB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024), '1,0\xa0GB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024*1024), '1,0\xa0TB')
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024 * 1024), '1,0\xa0TB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024*1024*1024),
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024 * 1024 * 1024),
|
||||||
'1,0\xa0PB')
|
'1,0\xa0PB')
|
||||||
self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),
|
self.assertEqual(filesizeformat(1024 * 1024 * 1024 * 1024 * 1024 * 2000),
|
||||||
'2000,0\xa0PB')
|
'2000,0\xa0PB')
|
||||||
self.assertEqual(filesizeformat(complex(1, -1)), '0\xa0Bytes')
|
self.assertEqual(filesizeformat(complex(1, -1)), '0\xa0Bytes')
|
||||||
self.assertEqual(filesizeformat(""), '0\xa0Bytes')
|
self.assertEqual(filesizeformat(""), '0\xa0Bytes')
|
||||||
|
|
|
@ -74,7 +74,7 @@ class ExpressionsTests(TestCase):
|
||||||
|
|
||||||
# We can perform arithmetic operations in expressions
|
# We can perform arithmetic operations in expressions
|
||||||
# Make sure we have 2 spare chairs
|
# Make sure we have 2 spare chairs
|
||||||
company_query.update(num_chairs=F("num_employees")+2)
|
company_query.update(num_chairs=F("num_employees") + 2)
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
company_query, [
|
company_query, [
|
||||||
{
|
{
|
||||||
|
|
|
@ -760,11 +760,11 @@ class FieldsTests(SimpleTestCase):
|
||||||
def test_url_regex_ticket11198(self):
|
def test_url_regex_ticket11198(self):
|
||||||
f = URLField()
|
f = URLField()
|
||||||
# hangs "forever" if catastrophic backtracking in ticket:#11198 not fixed
|
# hangs "forever" if catastrophic backtracking in ticket:#11198 not fixed
|
||||||
self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://%s' % ("X"*200,))
|
self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://%s' % ("X" * 200,))
|
||||||
|
|
||||||
# a second test, to make sure the problem is really addressed, even on
|
# a second test, to make sure the problem is really addressed, even on
|
||||||
# domains that don't fail the domain label length check in the regex
|
# domains that don't fail the domain label length check in the regex
|
||||||
self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://%s' % ("X"*60,))
|
self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://%s' % ("X" * 60,))
|
||||||
|
|
||||||
def test_urlfield_2(self):
|
def test_urlfield_2(self):
|
||||||
f = URLField(required=False)
|
f = URLField(required=False)
|
||||||
|
|
|
@ -283,26 +283,26 @@ class LookupTests(TestCase):
|
||||||
Article.objects.extra(select={'id_plus_one': 'id+1'})
|
Article.objects.extra(select={'id_plus_one': 'id+1'})
|
||||||
.order_by('id').values_list('id_plus_one', 'id'),
|
.order_by('id').values_list('id_plus_one', 'id'),
|
||||||
[
|
[
|
||||||
(self.a1.id+1, self.a1.id),
|
(self.a1.id + 1, self.a1.id),
|
||||||
(self.a2.id+1, self.a2.id),
|
(self.a2.id + 1, self.a2.id),
|
||||||
(self.a3.id+1, self.a3.id),
|
(self.a3.id + 1, self.a3.id),
|
||||||
(self.a4.id+1, self.a4.id),
|
(self.a4.id + 1, self.a4.id),
|
||||||
(self.a5.id+1, self.a5.id),
|
(self.a5.id + 1, self.a5.id),
|
||||||
(self.a6.id+1, self.a6.id),
|
(self.a6.id + 1, self.a6.id),
|
||||||
(self.a7.id+1, self.a7.id)
|
(self.a7.id + 1, self.a7.id)
|
||||||
],
|
],
|
||||||
transform=identity)
|
transform=identity)
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
Article.objects.extra(select={'id_plus_one': 'id+1'})
|
Article.objects.extra(select={'id_plus_one': 'id+1'})
|
||||||
.order_by('id').values_list('id', 'id_plus_one'),
|
.order_by('id').values_list('id', 'id_plus_one'),
|
||||||
[
|
[
|
||||||
(self.a1.id, self.a1.id+1),
|
(self.a1.id, self.a1.id + 1),
|
||||||
(self.a2.id, self.a2.id+1),
|
(self.a2.id, self.a2.id + 1),
|
||||||
(self.a3.id, self.a3.id+1),
|
(self.a3.id, self.a3.id + 1),
|
||||||
(self.a4.id, self.a4.id+1),
|
(self.a4.id, self.a4.id + 1),
|
||||||
(self.a5.id, self.a5.id+1),
|
(self.a5.id, self.a5.id + 1),
|
||||||
(self.a6.id, self.a6.id+1),
|
(self.a6.id, self.a6.id + 1),
|
||||||
(self.a7.id, self.a7.id+1)
|
(self.a7.id, self.a7.id + 1)
|
||||||
],
|
],
|
||||||
transform=identity)
|
transform=identity)
|
||||||
self.assertQuerysetEqual(
|
self.assertQuerysetEqual(
|
||||||
|
|
|
@ -162,7 +162,7 @@ class RequestsTests(SimpleTestCase):
|
||||||
response.set_cookie('max_age', max_age=10)
|
response.set_cookie('max_age', max_age=10)
|
||||||
max_age_cookie = response.cookies['max_age']
|
max_age_cookie = response.cookies['max_age']
|
||||||
self.assertEqual(max_age_cookie['max-age'], 10)
|
self.assertEqual(max_age_cookie['max-age'], 10)
|
||||||
self.assertEqual(max_age_cookie['expires'], cookie_date(time.time()+10))
|
self.assertEqual(max_age_cookie['expires'], cookie_date(time.time() + 10))
|
||||||
|
|
||||||
def test_httponly_cookie(self):
|
def test_httponly_cookie(self):
|
||||||
response = HttpResponse()
|
response = HttpResponse()
|
||||||
|
|
|
@ -9,7 +9,7 @@ from .models import (SyndicatedArticle, ExclusiveArticle, CustomArticle,
|
||||||
class SitesFrameworkTestCase(TestCase):
|
class SitesFrameworkTestCase(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
Site.objects.get_or_create(id=settings.SITE_ID, domain="example.com", name="example.com")
|
Site.objects.get_or_create(id=settings.SITE_ID, domain="example.com", name="example.com")
|
||||||
Site.objects.create(id=settings.SITE_ID+1, domain="example2.com", name="example2.com")
|
Site.objects.create(id=settings.SITE_ID + 1, domain="example2.com", name="example2.com")
|
||||||
|
|
||||||
def test_site_fk(self):
|
def test_site_fk(self):
|
||||||
article = ExclusiveArticle.objects.create(title="Breaking News!", site_id=settings.SITE_ID)
|
article = ExclusiveArticle.objects.create(title="Breaking News!", site_id=settings.SITE_ID)
|
||||||
|
@ -18,9 +18,9 @@ class SitesFrameworkTestCase(TestCase):
|
||||||
def test_sites_m2m(self):
|
def test_sites_m2m(self):
|
||||||
article = SyndicatedArticle.objects.create(title="Fresh News!")
|
article = SyndicatedArticle.objects.create(title="Fresh News!")
|
||||||
article.sites.add(Site.objects.get(id=settings.SITE_ID))
|
article.sites.add(Site.objects.get(id=settings.SITE_ID))
|
||||||
article.sites.add(Site.objects.get(id=settings.SITE_ID+1))
|
article.sites.add(Site.objects.get(id=settings.SITE_ID + 1))
|
||||||
article2 = SyndicatedArticle.objects.create(title="More News!")
|
article2 = SyndicatedArticle.objects.create(title="More News!")
|
||||||
article2.sites.add(Site.objects.get(id=settings.SITE_ID+1))
|
article2.sites.add(Site.objects.get(id=settings.SITE_ID + 1))
|
||||||
self.assertEqual(SyndicatedArticle.on_site.all().get(), article)
|
self.assertEqual(SyndicatedArticle.on_site.all().get(), article)
|
||||||
|
|
||||||
def test_custom_named_field(self):
|
def test_custom_named_field(self):
|
||||||
|
|
|
@ -28,28 +28,28 @@ class TimesinceTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_ignore_microseconds_and_seconds(self):
|
def test_ignore_microseconds_and_seconds(self):
|
||||||
""" Microseconds and seconds are ignored. """
|
""" Microseconds and seconds are ignored. """
|
||||||
self.assertEqual(timesince(self.t, self.t+self.onemicrosecond),
|
self.assertEqual(timesince(self.t, self.t + self.onemicrosecond),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t, self.t+self.onesecond),
|
self.assertEqual(timesince(self.t, self.t + self.onesecond),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
|
|
||||||
def test_other_units(self):
|
def test_other_units(self):
|
||||||
""" Test other units. """
|
""" Test other units. """
|
||||||
self.assertEqual(timesince(self.t, self.t+self.oneminute),
|
self.assertEqual(timesince(self.t, self.t + self.oneminute),
|
||||||
'1\xa0minute')
|
'1\xa0minute')
|
||||||
self.assertEqual(timesince(self.t, self.t+self.onehour), '1\xa0hour')
|
self.assertEqual(timesince(self.t, self.t + self.onehour), '1\xa0hour')
|
||||||
self.assertEqual(timesince(self.t, self.t+self.oneday), '1\xa0day')
|
self.assertEqual(timesince(self.t, self.t + self.oneday), '1\xa0day')
|
||||||
self.assertEqual(timesince(self.t, self.t+self.oneweek), '1\xa0week')
|
self.assertEqual(timesince(self.t, self.t + self.oneweek), '1\xa0week')
|
||||||
self.assertEqual(timesince(self.t, self.t+self.onemonth),
|
self.assertEqual(timesince(self.t, self.t + self.onemonth),
|
||||||
'1\xa0month')
|
'1\xa0month')
|
||||||
self.assertEqual(timesince(self.t, self.t+self.oneyear), '1\xa0year')
|
self.assertEqual(timesince(self.t, self.t + self.oneyear), '1\xa0year')
|
||||||
|
|
||||||
def test_multiple_units(self):
|
def test_multiple_units(self):
|
||||||
""" Test multiple units. """
|
""" Test multiple units. """
|
||||||
self.assertEqual(timesince(self.t,
|
self.assertEqual(timesince(self.t,
|
||||||
self.t+2*self.oneday+6*self.onehour), '2\xa0days, 6\xa0hours')
|
self.t + 2 * self.oneday + 6 * self.onehour), '2\xa0days, 6\xa0hours')
|
||||||
self.assertEqual(timesince(self.t,
|
self.assertEqual(timesince(self.t,
|
||||||
self.t+2*self.oneweek+2*self.oneday), '2\xa0weeks, 2\xa0days')
|
self.t + 2 * self.oneweek + 2 * self.oneday), '2\xa0weeks, 2\xa0days')
|
||||||
|
|
||||||
def test_display_first_unit(self):
|
def test_display_first_unit(self):
|
||||||
"""
|
"""
|
||||||
|
@ -57,42 +57,42 @@ class TimesinceTests(unittest.TestCase):
|
||||||
displayed.
|
displayed.
|
||||||
"""
|
"""
|
||||||
self.assertEqual(timesince(self.t,
|
self.assertEqual(timesince(self.t,
|
||||||
self.t+2*self.oneweek+3*self.onehour+4*self.oneminute),
|
self.t + 2 * self.oneweek + 3 * self.onehour + 4 * self.oneminute),
|
||||||
'2\xa0weeks')
|
'2\xa0weeks')
|
||||||
|
|
||||||
self.assertEqual(timesince(self.t,
|
self.assertEqual(timesince(self.t,
|
||||||
self.t+4*self.oneday+5*self.oneminute), '4\xa0days')
|
self.t + 4 * self.oneday + 5 * self.oneminute), '4\xa0days')
|
||||||
|
|
||||||
def test_display_second_before_first(self):
|
def test_display_second_before_first(self):
|
||||||
"""
|
"""
|
||||||
When the second date occurs before the first, we should always
|
When the second date occurs before the first, we should always
|
||||||
get 0 minutes.
|
get 0 minutes.
|
||||||
"""
|
"""
|
||||||
self.assertEqual(timesince(self.t, self.t-self.onemicrosecond),
|
self.assertEqual(timesince(self.t, self.t - self.onemicrosecond),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t, self.t-self.onesecond),
|
self.assertEqual(timesince(self.t, self.t - self.onesecond),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t, self.t-self.oneminute),
|
self.assertEqual(timesince(self.t, self.t - self.oneminute),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t, self.t-self.onehour),
|
self.assertEqual(timesince(self.t, self.t - self.onehour),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t, self.t-self.oneday),
|
self.assertEqual(timesince(self.t, self.t - self.oneday),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t, self.t-self.oneweek),
|
self.assertEqual(timesince(self.t, self.t - self.oneweek),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t, self.t-self.onemonth),
|
self.assertEqual(timesince(self.t, self.t - self.onemonth),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t, self.t-self.oneyear),
|
self.assertEqual(timesince(self.t, self.t - self.oneyear),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t,
|
self.assertEqual(timesince(self.t,
|
||||||
self.t-2*self.oneday-6*self.onehour), '0\xa0minutes')
|
self.t - 2 * self.oneday - 6 * self.onehour), '0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t,
|
self.assertEqual(timesince(self.t,
|
||||||
self.t-2*self.oneweek-2*self.oneday), '0\xa0minutes')
|
self.t - 2 * self.oneweek - 2 * self.oneday), '0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t,
|
self.assertEqual(timesince(self.t,
|
||||||
self.t-2*self.oneweek-3*self.onehour-4*self.oneminute),
|
self.t - 2 * self.oneweek - 3 * self.onehour - 4 * self.oneminute),
|
||||||
'0\xa0minutes')
|
'0\xa0minutes')
|
||||||
self.assertEqual(timesince(self.t,
|
self.assertEqual(timesince(self.t,
|
||||||
self.t-4*self.oneday-5*self.oneminute), '0\xa0minutes')
|
self.t - 4 * self.oneday - 5 * self.oneminute), '0\xa0minutes')
|
||||||
|
|
||||||
@requires_tz_support
|
@requires_tz_support
|
||||||
def test_different_timezones(self):
|
def test_different_timezones(self):
|
||||||
|
|
Loading…
Reference in New Issue