Commit 047d1611 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Fixed #14002 -- Updated filesize filter to support terabyte and petabyte file...

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
parent 4835d862
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -344,6 +344,7 @@ answer newbie questions, and generally made Django that much better:
    James Murty
    msundstr
    Robert Myers <myer0052@gmail.com>
    Aaron T. Myers <atmyers@gmail.com>
    Alexander Myodov <alex@myodov.com>
    Nebojša Dorđević
    Doug Napoleone <doug@dougma.com>
+12 −6
Original line number Diff line number Diff line
@@ -807,13 +807,19 @@ def filesizeformat(bytes):
    except (TypeError,ValueError,UnicodeDecodeError):
        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}
    if bytes < 1024 * 1024:
        return ugettext("%.1f KB") % (bytes / 1024)
    if bytes < 1024 * 1024 * 1024:
        return ugettext("%.1f MB") % (bytes / (1024 * 1024))
    return ugettext("%.1f GB") % (bytes / (1024 * 1024 * 1024))
    for index, (unit, unit_size) in enumerate(BYTE_UNITS):
        if bytes < unit_size * 1024 or index == len(BYTE_UNITS) - 1:
            return ugettext("%.1f %s") % (bytes / unit_size, unit)
filesizeformat.is_safe = True

def pluralize(value, arg=u's'):
+9 −0
Original line number Diff line number Diff line
@@ -476,6 +476,15 @@ u'1024.0 MB'
>>> filesizeformat(1024*1024*1024)
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))
u'0 bytes'