various progress tweaks
This commit is contained in:
parent
ddb01da2bd
commit
e0042f6fe5
4 changed files with 44 additions and 56 deletions
|
@ -38,7 +38,7 @@ class Progress(edbob.Object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, message, maximum):
|
def __init__(self, message, maximum):
|
||||||
print >> sys.stderr, "\n%s...(%u total)" % (message, maximum)
|
sys.stderr.write("\n%s...(%u total)\n" % (message, maximum))
|
||||||
widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ', progressbar.ETA()]
|
widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ', progressbar.ETA()]
|
||||||
self.progress = progressbar.ProgressBar(maxval=maximum, widgets=widgets).start()
|
self.progress = progressbar.ProgressBar(maxval=maximum, widgets=widgets).start()
|
||||||
|
|
||||||
|
@ -47,4 +47,4 @@ class Progress(edbob.Object):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
print >> sys.stderr, ''
|
sys.stderr.write("\n")
|
||||||
|
|
|
@ -47,50 +47,32 @@ class SessionProgress(object):
|
||||||
|
|
||||||
def __init__(self, session, key):
|
def __init__(self, session, key):
|
||||||
self.session = get_progress_session(session, key)
|
self.session = get_progress_session(session, key)
|
||||||
self.cancelled = False
|
self.canceled = False
|
||||||
|
self.clear()
|
||||||
|
|
||||||
def __call__(self, message, maximum):
|
def __call__(self, message, maximum):
|
||||||
self.session['complete'] = False
|
self.clear()
|
||||||
self.session['message'] = message
|
self.session['message'] = message
|
||||||
self.session['maximum'] = maximum
|
self.session['maximum'] = maximum
|
||||||
self.session['cancelled'] = False
|
|
||||||
self.session['value'] = 0
|
self.session['value'] = 0
|
||||||
self.session.save()
|
self.session.save()
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self.session.clear()
|
||||||
|
self.session['complete'] = False
|
||||||
|
self.session['error'] = False
|
||||||
|
self.session['canceled'] = False
|
||||||
|
self.session.save()
|
||||||
|
|
||||||
def update(self, value):
|
def update(self, value):
|
||||||
self.session.load()
|
self.session.load()
|
||||||
if self.session.get('cancelled'):
|
if self.session.get('canceled'):
|
||||||
self.cancelled = True
|
self.canceled = True
|
||||||
else:
|
else:
|
||||||
self.session['value'] = value
|
self.session['value'] = value
|
||||||
self.session.save()
|
self.session.save()
|
||||||
return not self.cancelled
|
return not self.canceled
|
||||||
|
|
||||||
def destroy(self):
|
|
||||||
if not self.cancelled:
|
|
||||||
self.session['complete'] = True
|
|
||||||
self.session.save()
|
|
||||||
|
|
||||||
def secondary_progress(self):
|
|
||||||
return SecondarySessionProgress(self)
|
|
||||||
|
|
||||||
|
|
||||||
class SecondarySessionProgress(object):
|
|
||||||
|
|
||||||
def __init__(self, parent):
|
|
||||||
self.parent = parent
|
|
||||||
self.session = parent.session
|
|
||||||
|
|
||||||
def __call__(self, message, maximum):
|
|
||||||
self.session['message'] = message
|
|
||||||
self.session['value'] = 0
|
|
||||||
self.session['maximum'] = maximum
|
|
||||||
self.session.save()
|
|
||||||
return self
|
|
||||||
|
|
||||||
def update(self, value):
|
|
||||||
return self.parent.update(value)
|
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -61,6 +61,7 @@
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '${url('progress', key=key)}',
|
url: '${url('progress', key=key)}',
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
|
if (data.complete || data.maximum) {
|
||||||
$('#message').html(data.message);
|
$('#message').html(data.message);
|
||||||
$('#total').html('('+data.maximum+' total)');
|
$('#total').html('('+data.maximum+' total)');
|
||||||
$('#cancel button').show();
|
$('#cancel button').show();
|
||||||
|
@ -81,6 +82,9 @@
|
||||||
}
|
}
|
||||||
$('#percentage').html(width+'%');
|
$('#percentage').html(width+'%');
|
||||||
}
|
}
|
||||||
|
} else if (data.error) {
|
||||||
|
location.href = '${cancel_url}';
|
||||||
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -112,7 +116,7 @@
|
||||||
|
|
||||||
<div id="wrapper">
|
<div id="wrapper">
|
||||||
|
|
||||||
<p><span id="message">Working</span> ... <span id="total"></span></p>
|
<p><span id="message">${initial_msg or "Working"} (please wait)</span> ... <span id="total"></span></p>
|
||||||
|
|
||||||
<table id="progress-wrapper">
|
<table id="progress-wrapper">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -32,8 +32,10 @@ from edbob.pyramid.progress import get_progress_session
|
||||||
def progress(request):
|
def progress(request):
|
||||||
key = request.matchdict['key']
|
key = request.matchdict['key']
|
||||||
session = get_progress_session(request.session, key)
|
session = get_progress_session(request.session, key)
|
||||||
if session.get('complete') and session.get('success_msg'):
|
if session.get('complete'):
|
||||||
request.session.flash(session['success_msg'])
|
request.session.flash(session.get('success_msg', "The process has completed successfully."))
|
||||||
|
elif session.get('error'):
|
||||||
|
request.session.flash(session.get('error_msg', "An unspecified error occurred."), 'error')
|
||||||
return session
|
return session
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,9 +43,9 @@ def cancel(request):
|
||||||
key = request.matchdict['key']
|
key = request.matchdict['key']
|
||||||
session = get_progress_session(request.session, key)
|
session = get_progress_session(request.session, key)
|
||||||
session.clear()
|
session.clear()
|
||||||
session['cancelled'] = True
|
session['canceled'] = True
|
||||||
session.save()
|
session.save()
|
||||||
msg = request.params.get('cancel_msg', "The operation was cancelled.")
|
msg = request.params.get('cancel_msg', "The operation was canceled.")
|
||||||
request.session.flash(msg)
|
request.session.flash(msg)
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue