Fixed #14002 -- Updated filesize filter to support terabyte and petabyte file sizes. Thanks to Aaron T. Myers for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13584 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
4835d86203
commit
047d161164
1
AUTHORS
1
AUTHORS
|
@ -344,6 +344,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
James Murty
|
James Murty
|
||||||
msundstr
|
msundstr
|
||||||
Robert Myers <myer0052@gmail.com>
|
Robert Myers <myer0052@gmail.com>
|
||||||
|
Aaron T. Myers <atmyers@gmail.com>
|
||||||
Alexander Myodov <alex@myodov.com>
|
Alexander Myodov <alex@myodov.com>
|
||||||
Nebojša Dorđević
|
Nebojša Dorđević
|
||||||
Doug Napoleone <doug@dougma.com>
|
Doug Napoleone <doug@dougma.com>
|
||||||
|
|
|
@ -807,13 +807,19 @@ def filesizeformat(bytes):
|
||||||
except (TypeError,ValueError,UnicodeDecodeError):
|
except (TypeError,ValueError,UnicodeDecodeError):
|
||||||
return u"0 bytes"
|
return u"0 bytes"
|
||||||
|
|
||||||
if bytes < 1024:
|
BYTE_UNITS = (
|
||||||
|
('KB', 1024),
|
||||||
|
('MB', 1024 * 1024),
|
||||||
|
('GB', 1024 * 1024 * 1024),
|
||||||
|
('TB', 1024 * 1024 * 1024 * 1024),
|
||||||
|
('PB', 1024 * 1024 * 1024 * 1024 * 1024)
|
||||||
|
)
|
||||||
|
|
||||||
|
if bytes < BYTE_UNITS[0][1]:
|
||||||
return ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes}
|
return ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes}
|
||||||
if bytes < 1024 * 1024:
|
for index, (unit, unit_size) in enumerate(BYTE_UNITS):
|
||||||
return ugettext("%.1f KB") % (bytes / 1024)
|
if bytes < unit_size * 1024 or index == len(BYTE_UNITS) - 1:
|
||||||
if bytes < 1024 * 1024 * 1024:
|
return ugettext("%.1f %s") % (bytes / unit_size, unit)
|
||||||
return ugettext("%.1f MB") % (bytes / (1024 * 1024))
|
|
||||||
return ugettext("%.1f GB") % (bytes / (1024 * 1024 * 1024))
|
|
||||||
filesizeformat.is_safe = True
|
filesizeformat.is_safe = True
|
||||||
|
|
||||||
def pluralize(value, arg=u's'):
|
def pluralize(value, arg=u's'):
|
||||||
|
|
|
@ -476,6 +476,15 @@ u'1024.0 MB'
|
||||||
>>> filesizeformat(1024*1024*1024)
|
>>> filesizeformat(1024*1024*1024)
|
||||||
u'1.0 GB'
|
u'1.0 GB'
|
||||||
|
|
||||||
|
>>> filesizeformat(1024*1024*1024*1024)
|
||||||
|
u'1.0 TB'
|
||||||
|
|
||||||
|
>>> filesizeformat(1024*1024*1024*1024*1024)
|
||||||
|
u'1.0 PB'
|
||||||
|
|
||||||
|
>>> filesizeformat(1024*1024*1024*1024*1024*2000)
|
||||||
|
u'2000.0 PB'
|
||||||
|
|
||||||
>>> filesizeformat(complex(1,-1))
|
>>> filesizeformat(complex(1,-1))
|
||||||
u'0 bytes'
|
u'0 bytes'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue