Ticket #14240: django_localize_filesizeformat_number.r15148.diff

File django_localize_filesizeformat_number.r15148.diff, 4.0 KB (added by David Danier <david.danier@…>, 9 years ago)
  • django/template/defaultfilters.py

     
    799799    try:
    800800        bytes = float(bytes)
    801801    except (TypeError,ValueError,UnicodeDecodeError):
    802         return u"0 bytes"
     802        return ungettext("%(size)d byte", "%(size)d bytes", 0) % {'size': 0}
    803803
     804    filesize_number_format = lambda value: formats.number_format(round(value, 1), 1)
     805
    804806    if bytes < 1024:
    805807        return ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes}
    806808    if bytes < 1024 * 1024:
    807         return ugettext("%.1f KB") % (bytes / 1024)
     809        return ugettext("%s KB") % filesize_number_format(bytes / 1024)
    808810    if bytes < 1024 * 1024 * 1024:
    809         return ugettext("%.1f MB") % (bytes / (1024 * 1024))
     811        return ugettext("%s MB") % filesize_number_format(bytes / (1024 * 1024))
    810812    if bytes < 1024 * 1024 * 1024 * 1024:
    811         return ugettext("%.1f GB") % (bytes / (1024 * 1024 * 1024))
     813        return ugettext("%s GB") % filesize_number_format(bytes / (1024 * 1024 * 1024))
    812814    if bytes < 1024 * 1024 * 1024 * 1024 * 1024:
    813         return ugettext("%.1f TB") % (bytes / (1024 * 1024 * 1024 * 1024))
    814     return ugettext("%.1f PB") % (bytes / (1024 * 1024 * 1024 * 1024 * 1024))
     815        return ugettext("%s TB") % filesize_number_format(bytes / (1024 * 1024 * 1024 * 1024))
     816    return ugettext("%s PB") % filesize_number_format(bytes / (1024 * 1024 * 1024 * 1024 * 1024))
    815817filesizeformat.is_safe = True
    816818
    817819def pluralize(value, arg=u's'):
  • tests/regressiontests/defaultfilters/tests.py

     
    443443        self.assertEqual(filesizeformat(u"\N{GREEK SMALL LETTER ALPHA}"),
    444444                          u'0 bytes')
    445445
     446    def test_localized_filesizeformat(self):
     447        from django.utils.translation import activate, deactivate
     448        old_localize = settings.USE_L10N
     449        try:
     450            activate('de')
     451            settings.USE_L10N = True
     452            self.assertEqual(filesizeformat(1023), u'1023 Bytes')
     453            self.assertEqual(filesizeformat(1024), u'1,0 KB')
     454            self.assertEqual(filesizeformat(10*1024), u'10,0 KB')
     455            self.assertEqual(filesizeformat(1024*1024-1), u'1024,0 KB')
     456            self.assertEqual(filesizeformat(1024*1024), u'1,0 MB')
     457            self.assertEqual(filesizeformat(1024*1024*50), u'50,0 MB')
     458            self.assertEqual(filesizeformat(1024*1024*1024-1), u'1024,0 MB')
     459            self.assertEqual(filesizeformat(1024*1024*1024), u'1,0 GB')
     460            self.assertEqual(filesizeformat(1024*1024*1024*1024), u'1,0 TB')
     461            self.assertEqual(filesizeformat(1024*1024*1024*1024*1024),
     462                              u'1,0 PB')
     463            self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),
     464                              u'2000,0 PB')
     465            self.assertEqual(filesizeformat(complex(1,-1)), u'0 Bytes')
     466            self.assertEqual(filesizeformat(""), u'0 Bytes')
     467            self.assertEqual(filesizeformat(u"\N{GREEK SMALL LETTER ALPHA}"),
     468                              u'0 Bytes')
     469        finally:
     470            deactivate()
     471            settings.USE_L10N = old_localize
     472
    446473    def test_pluralize(self):
    447474        self.assertEqual(pluralize(1), u'')
    448475        self.assertEqual(pluralize(0), u's')
  • AUTHORS

     
    129129    John D'Agostino <john.dagostino@gmail.com>
    130130    dackze+django@gmail.com
    131131    Mihai Damian <yang_damian@yahoo.com>
    132     David Danier <goliath.mailinglist@gmx.de>
     132    David Danier <david.danier@team23.de>
    133133    Dirk Datzert <dummy@habmalnefrage.de>
    134134    Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/>
    135135    dave@thebarproject.com
Back to Top