ui.py

changeset 19
f9ce2442f14f
parent 18
6d8ac70c5fb9
child 20
fdfbe5d7b677
equal deleted inserted replaced
18:6d8ac70c5fb9 19:f9ce2442f14f
20 ERRORS: 'B?' 20 ERRORS: 'B?'
21 } 21 }
22 22
23 def combine_state(state1, state2): 23 def combine_state(state1, state2):
24 return max(state1, state2) 24 return max(state1, state2)
25
26 # Based on code snatched from
27 # https://stackoverflow.com/questions/12523586/python-format-size-application-converting-b-to-kb-mb-gb-tb/37423778
28 def humanbytes(B):
29 'Return the given bytes as a human friendly KB, MB, GB, or TB string'
30 B = float(B)
31 KB = float(1024)
32 MB = float(KB ** 2) # 1,048,576
33 GB = float(KB ** 3) # 1,073,741,824
34 TB = float(KB ** 4) # 1,099,511,627,776
35
36 if B < KB:
37 return '{0} {1}B'.format(B)
38 elif KB <= B < MB:
39 return '{0:.2f}KB'.format(B/KB)
40 elif MB <= B < GB:
41 return '{0:.2f}MB'.format(B/MB)
42 elif GB <= B < TB:
43 return '{0:.2f}GB'.format(B/GB)
44 elif TB <= B:
45 return '{0:.2f}TB'.format(B/TB)
25 46
26 def make_title(status): 47 def make_title(status):
27 state=INACTIVE 48 state=INACTIVE
28 49
29 if status['type']=='scheduled': 50 if status['type']=='scheduled':
51 title="%s (%s%s %s)" % (status['name'], detail, status['operation'], whenstr) 72 title="%s (%s%s %s)" % (status['name'], detail, status['operation'], whenstr)
52 elif status['type']=='current': 73 elif status['type']=='current':
53 # Operation running 74 # Operation running
54 progress='' 75 progress=''
55 if 'progress_current' in status and 'progress_total' in status: 76 if 'progress_current' in status and 'progress_total' in status:
56 progress='%d%%' % (status.progress_current/status.progress_total) 77 progress=' %d%%' % (status.progress_current/status.progress_total)
78 elif 'original_size' in status and 'deduplicated_size' in status:
79 progress=' %s O %s D' % (humanbytes(status.original_size),
80 humanbytes(status.deduplicated_size))
57 title="%s (running: %s%s)" % (status['name'], status['operation'], progress) 81 title="%s (running: %s%s)" % (status['name'], status['operation'], progress)
58 state=ACTIVE 82 state=ACTIVE
59 else: # status['type']=='nothing': 83 else: # status['type']=='nothing':
60 # Should be unscheduled, nothing running 84 # Should be unscheduled, nothing running
61 title=status['name'] 85 title=status['name']

mercurial