summaryrefslogtreecommitdiffstats
path: root/mirrors/templatetags/mirror_status.py
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2013-11-27 17:49:58 -0500
committerDan McGee <dan@archlinux.org>2013-11-27 17:53:37 -0500
commit9adc2e53124daa6d13090166830396ffff9013d3 (patch)
tree37a7eea45098117216e4e708fa05f011e83b3821 /mirrors/templatetags/mirror_status.py
parent954b61ee3a0760990f8e17d7d692f3cabd949f9f (diff)
downloadarchweb-9adc2e53124daa6d13090166830396ffff9013d3.tar.gz
archweb-9adc2e53124daa6d13090166830396ffff9013d3.zip
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/templatetags/mirror_status.py')
-rw-r--r--mirrors/templatetags/mirror_status.py11
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: