From 087951d3b45bab0a2ecd7729350271fffda35b43 Mon Sep 17 00:00:00 2001 From: Lance Parsons Date: Fri, 26 Apr 2013 12:40:59 -0400 Subject: [PATCH 1/3] Improved total disk usage display for message on Reports app Disk space maintenance page --- .../webapps/reports/controllers/system.py | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/galaxy/webapps/reports/controllers/system.py b/lib/galaxy/webapps/reports/controllers/system.py index 9672bdb7aed..73aa5e924f3 100644 --- a/lib/galaxy/webapps/reports/controllers/system.py +++ b/lib/galaxy/webapps/reports/controllers/system.py @@ -1,5 +1,6 @@ import operator, os from datetime import datetime, timedelta +from decimal import Decimal from galaxy.web.base.controller import * from galaxy import model from galaxy.model.orm import * @@ -89,7 +90,8 @@ class System( BaseUIController ): except: pass history_count += 1 - message = "%d histories ( including a total of %d datasets ) were deleted more than %d days ago, but have not yet been purged. Disk space: " %( history_count, dataset_count, deleted_histories_days ) + str( disk_space ) + message = "%d histories ( including a total of %d datasets ) were deleted more than %d days ago, but have not yet been purged, " \ + "disk space: %s (%d bytes)." % ( history_count, dataset_count, deleted_histories_days, nice_size( disk_space ), disk_space ) else: message = "Enter the number of days." return str( deleted_histories_days ), message @@ -111,8 +113,8 @@ class System( BaseUIController ): disk_space += dataset.file_size except: pass - message = str( dataset_count ) + " datasets were deleted more than " + str( deleted_datasets_days ) + \ - " days ago, but have not yet been purged, disk space: " + nice_size( disk_space ) + "." + message = "%d datasets were deleted more than %d days ago, but have not yet been purged," \ + " disk space: %s (%d bytes)." % ( dataset_count, deleted_datasets_days, nice_size( disk_space ), disk_space ) else: message = "Enter the number of days." return str( deleted_datasets_days ), message @@ -178,17 +180,14 @@ class System( BaseUIController ): .order_by( desc( model.Dataset.table.c.file_size ) ) return file_path, disk_usage, datasets, file_size_str -def nice_size( size ): +def nice_size(size): """Returns a readably formatted string with the size""" - words = [ 'bytes', 'Kb', 'Mb', 'Gb' ] try: - size = float( size ) + nsize = size + for x in ['bytes','KB','MB','GB']: + if nsize < 1024.0: + return "%3.1f%s" % (size, x) + nsize /= Decimal("1024.0") + return "%.1f%s" % (nsize, 'TB') except: - return '??? bytes' - for ind, word in enumerate( words ): - step = 1024 ** ( ind + 1 ) - if step > size: - size = size / float( 1024 ** ind ) - out = "%.1f %s" % ( size, word ) - return out - return '??? bytes' + return "%s bytes" % size From 430e99dfba7325caf0d6131c641a7a335aadd163 Mon Sep 17 00:00:00 2001 From: Lance Parsons Date: Fri, 26 Apr 2013 15:38:34 -0400 Subject: [PATCH 2/3] Fixed nice display on reports, esp when size in bytes --- .../webapps/reports/controllers/system.py | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/galaxy/webapps/reports/controllers/system.py b/lib/galaxy/webapps/reports/controllers/system.py index 73aa5e924f3..f5aeee415fb 100644 --- a/lib/galaxy/webapps/reports/controllers/system.py +++ b/lib/galaxy/webapps/reports/controllers/system.py @@ -91,7 +91,7 @@ class System( BaseUIController ): pass history_count += 1 message = "%d histories ( including a total of %d datasets ) were deleted more than %d days ago, but have not yet been purged, " \ - "disk space: %s (%d bytes)." % ( history_count, dataset_count, deleted_histories_days, nice_size( disk_space ), disk_space ) + "disk space: %s." % ( history_count, dataset_count, deleted_histories_days, nice_size( disk_space, True ) ) else: message = "Enter the number of days." return str( deleted_histories_days ), message @@ -114,7 +114,7 @@ class System( BaseUIController ): except: pass message = "%d datasets were deleted more than %d days ago, but have not yet been purged," \ - " disk space: %s (%d bytes)." % ( dataset_count, deleted_datasets_days, nice_size( disk_space ), disk_space ) + " disk space: %s." % ( dataset_count, deleted_datasets_days, nice_size( disk_space, True )) else: message = "Enter the number of days." return str( deleted_datasets_days ), message @@ -180,14 +180,23 @@ class System( BaseUIController ): .order_by( desc( model.Dataset.table.c.file_size ) ) return file_path, disk_usage, datasets, file_size_str -def nice_size(size): +def nice_size(size, include_bytes=False): """Returns a readably formatted string with the size""" + niced = False + nice_string = "%s bytes" % size try: - nsize = size + nsize = Decimal(size) for x in ['bytes','KB','MB','GB']: - if nsize < 1024.0: - return "%3.1f%s" % (size, x) + if nsize.compare(Decimal("1024.0")) == Decimal("-1"): + nice_string = "%3.1f %s" % (nsize, x) + niced = True + break nsize /= Decimal("1024.0") - return "%.1f%s" % (nsize, 'TB') + if not niced: + nice_string = "%3.1f %s" % (nsize, 'TB') + niced = True + if include_bytes and x != 'bytes': + nice_string = "%s (%s bytes)" % (nice_string, size) except: - return "%s bytes" % size + pass + return nice_string From d3be5bddf598f7270e2413eb09d170d3f5715e92 Mon Sep 17 00:00:00 2001 From: Lance Parsons Date: Wed, 25 Sep 2013 11:49:31 -0400 Subject: [PATCH 3/3] Use nice size for individual files in disk usage report --- lib/galaxy/webapps/reports/controllers/system.py | 3 ++- templates/webapps/reports/system.mako | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/webapps/reports/controllers/system.py b/lib/galaxy/webapps/reports/controllers/system.py index 1ef8f591073..8979318490b 100644 --- a/lib/galaxy/webapps/reports/controllers/system.py +++ b/lib/galaxy/webapps/reports/controllers/system.py @@ -40,7 +40,8 @@ class System( BaseUIController ): userless_histories_days=userless_histories_days, deleted_histories_days=deleted_histories_days, deleted_datasets_days=deleted_datasets_days, - message=message ) + message=message, + nice_size=nice_size ) def userless_histories( self, trans, **kwd ): """The number of userless histories and associated datasets that have not been updated for the specified number of days.""" params = util.Params( kwd ) diff --git a/templates/webapps/reports/system.mako b/templates/webapps/reports/system.mako index 2bace12ee17..f0f915cb511 100644 --- a/templates/webapps/reports/system.mako +++ b/templates/webapps/reports/system.mako @@ -83,7 +83,7 @@ ${time_ago( dataset.update_time )} ${dataset.deleted} - ${dataset.file_size} + ${nice_size( dataset.file_size, True )} <% ctr += 1 %> %endfor