diff options
author | Dan McGee <dan@archlinux.org> | 2013-11-27 17:49:58 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2013-11-27 17:53:37 -0500 |
commit | 9adc2e53124daa6d13090166830396ffff9013d3 (patch) | |
tree | 37a7eea45098117216e4e708fa05f011e83b3821 /mirrors | |
parent | 954b61ee3a0760990f8e17d7d692f3cabd949f9f (diff) |
Stop using Django-provided floatformat template tagrelease_2013-11-30
It turns out this is a HUGE part of our slow mirror status template
rendering, due to the internal workings. Everything is converted to a
Python decimal object which is way slower than just staying in native
floating point. Given we are always dealing with floats when we need to
do our formatting, a home-rolled template tag can accomplish this much
faster.
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'mirrors')
-rw-r--r-- | mirrors/templatetags/mirror_status.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/mirrors/templatetags/mirror_status.py b/mirrors/templatetags/mirror_status.py index 9a363fbe..b3810d9a 100644 --- a/mirrors/templatetags/mirror_status.py +++ b/mirrors/templatetags/mirror_status.py @@ -1,6 +1,5 @@ from datetime import timedelta from django import template -from django.template.defaultfilters import floatformat register = template.Library() @@ -27,10 +26,16 @@ def hours(value): return '%d hours' % hrs @register.filter -def percentage(value, arg=-1): +def floatvalue(value, arg=2): + if value is None: + return u'' + return '%.*f' % (arg, value) + +@register.filter +def percentage(value, arg=1): if not value and type(value) != float: return u'' new_val = value * 100.0 - return floatformat(new_val, arg) + '%' + return '%.*f%%' % (arg, new_val) # vim: set ts=4 sw=4 et: |