From 842ceb5fe6758b54a22594f120f8180a902fe1cc Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 16 Aug 2010 04:42:44 +0000 Subject: [PATCH] Fixed #14002 -- Modified filesize filter to ensure strings are translatable. Thanks to claudep for the report. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13594 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/template/defaultfilters.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index 1a9f834b03f..739f50f2358 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -807,19 +807,17 @@ def filesizeformat(bytes): except (TypeError,ValueError,UnicodeDecodeError): return u"0 bytes" - 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]: + if bytes < 1024: return ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes} - 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) + if bytes < 1024 * 1024: + return ugettext("%.1f KB") % (bytes / 1024) + if bytes < 1024 * 1024 * 1024: + return ugettext("%.1f MB") % (bytes / (1024 * 1024)) + if bytes < 1024 * 1024 * 1024 * 1024: + return ugettext("%.1f GB") % (bytes / (1024 * 1024 * 1024)) + if bytes < 1024 * 1024 * 1024 * 1024 * 1024: + return ugettext("%.1f TB") % (bytes / (1024 * 1024 * 1024 * 1024)) + return ugettext("%.1f PB") % (bytes / (1024 * 1024 * 1024 * 1024 * 1024)) filesizeformat.is_safe = True def pluralize(value, arg=u's'):