Skip to content

Commit

Permalink
Fixed #18645 -- Clarified filesizeformat implementation
Browse files Browse the repository at this point in the history
Thanks Jérôme Renard for the patch.
  • Loading branch information
aaugustin committed Jul 18, 2012
1 parent 810fd23 commit 1e89a20
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions django/template/defaultfilters.py
Expand Up @@ -827,17 +827,23 @@ def filesizeformat(bytes):


filesize_number_format = lambda value: formats.number_format(round(value, 1), 1) filesize_number_format = lambda value: formats.number_format(round(value, 1), 1)


if bytes < 1024: KB = 1<<10
MB = 1<<20
GB = 1<<30
TB = 1<<40
PB = 1<<50

if bytes < KB:
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: if bytes < MB:
return ugettext("%s KB") % filesize_number_format(bytes / 1024) return ugettext("%s KB") % filesize_number_format(bytes / KB)
if bytes < 1024 * 1024 * 1024: if bytes < GB:
return ugettext("%s MB") % filesize_number_format(bytes / (1024 * 1024)) return ugettext("%s MB") % filesize_number_format(bytes / MB)
if bytes < 1024 * 1024 * 1024 * 1024: if bytes < TB:
return ugettext("%s GB") % filesize_number_format(bytes / (1024 * 1024 * 1024)) return ugettext("%s GB") % filesize_number_format(bytes / GB)
if bytes < 1024 * 1024 * 1024 * 1024 * 1024: if bytes < PB:
return ugettext("%s TB") % filesize_number_format(bytes / (1024 * 1024 * 1024 * 1024)) return ugettext("%s TB") % filesize_number_format(bytes / TB)
return ugettext("%s PB") % filesize_number_format(bytes / (1024 * 1024 * 1024 * 1024 * 1024)) return ugettext("%s PB") % filesize_number_format(bytes / PB)


@register.filter(is_safe=False) @register.filter(is_safe=False)
def pluralize(value, arg='s'): def pluralize(value, arg='s'):
Expand Down

0 comments on commit 1e89a20

Please sign in to comment.