summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvangelos Foutras <foutrelis@gmail.com>2011-04-30 15:15:38 +0300
committerDan McGee <dan@archlinux.org>2011-05-02 10:50:10 -0500
commit8de1bd0639a8b6117bc35dfe0ad1e6a1ac34f715 (patch)
treec882ed5fc323a394b396ad69a3df8f5c680452e1
parenta5991a31b92e04059589bf897a593535984384e6 (diff)
Add filesizeformat filter to sizes in reports/big
We also add a new 'filesize' tablesorter parser that handles all the suffixes found in django's filesizeformat filter. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--devel/views.py9
-rw-r--r--media/archweb.js27
-rw-r--r--templates/devel/packages.html1
3 files changed, 36 insertions, 1 deletions
diff --git a/devel/views.py b/devel/views.py
index 6907de24..9c523f0a 100644
--- a/devel/views.py
+++ b/devel/views.py
@@ -10,6 +10,7 @@ from django.db.models import Q
from django.http import Http404
from django.shortcuts import get_object_or_404
from django.template import loader, Context
+from django.template.defaultfilters import filesizeformat
from django.views.decorators.cache import never_cache
from django.views.generic.simple import direct_to_template
@@ -140,7 +141,13 @@ def report(request, report):
cutoff = 50 * 1024 * 1024
packages = packages.filter(compressed_size__gte=cutoff).order_by('-compressed_size')
names = [ 'Compressed Size', 'Installed Size' ]
- attrs = [ 'compressed_size', 'installed_size' ]
+ attrs = [ 'compressed_size_pretty', 'installed_size_pretty' ]
+ # Format the compressed and installed sizes with MB/GB/etc suffixes
+ for package in packages:
+ package.compressed_size_pretty = filesizeformat(
+ package.compressed_size)
+ package.installed_size_pretty = filesizeformat(
+ package.installed_size)
elif report == 'uncompressed-man':
title = 'Packages with uncompressed manpages'
# magic going on here! Checking for all '.1'...'.9' extensions
diff --git a/media/archweb.js b/media/archweb.js
index 03358fa9..78b15670 100644
--- a/media/archweb.js
+++ b/media/archweb.js
@@ -67,6 +67,33 @@ if (typeof $.tablesorter !== 'undefined') {
},
type: 'numeric'
});
+ $.tablesorter.addParser({
+ id: 'filesize',
+ re: /^(\d+(?:\.\d+)?) (bytes?|KB|MB|GB|TB)$/,
+ is: function(s) {
+ return this.re.test(s);
+ },
+ format: function(s) {
+ var matches = this.re.exec(s);
+ var size = parseFloat(matches[1]);
+ var suffix = matches[2];
+
+ switch(suffix) {
+ case 'byte':
+ case 'bytes':
+ return size;
+ case 'KB':
+ return size * 1024;
+ case 'MB':
+ return size * 1024 * 1024;
+ case 'GB':
+ return size * 1024 * 1024 * 1024;
+ case 'TB':
+ return size * 1024 * 1024 * 1024 * 1024;
+ }
+ },
+ type: 'numeric'
+ });
}
/* news/add.html */
diff --git a/templates/devel/packages.html b/templates/devel/packages.html
index 32cdf217..e0988c03 100644
--- a/templates/devel/packages.html
+++ b/templates/devel/packages.html
@@ -49,6 +49,7 @@
</div>
{% load cdn %}{% jquery %}
<script type="text/javascript" src="/media/jquery.tablesorter.min.js"></script>
+<script type="text/javascript" src="/media/archweb.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".results").tablesorter({widgets: ['zebra']});