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):
|
||||
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()]
|
||||
self.progress = progressbar.ProgressBar(maxval=maximum, widgets=widgets).start()
|
||||
|
||||
|
@ -47,4 +47,4 @@ class Progress(edbob.Object):
|
|||
return True
|
||||
|
||||
def destroy(self):
|
||||
print >> sys.stderr, ''
|
||||
sys.stderr.write("\n")
|
||||
|
|
|
@ -47,50 +47,32 @@ class SessionProgress(object):
|
|||
|
||||
def __init__(self, session, key):
|
||||
self.session = get_progress_session(session, key)
|
||||
self.cancelled = False
|
||||
self.canceled = False
|
||||
self.clear()
|
||||
|
||||
def __call__(self, message, maximum):
|
||||
self.session['complete'] = False
|
||||
self.clear()
|
||||
self.session['message'] = message
|
||||
self.session['maximum'] = maximum
|
||||
self.session['cancelled'] = False
|
||||
self.session['value'] = 0
|
||||
self.session.save()
|
||||
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):
|
||||
self.session.load()
|
||||
if self.session.get('cancelled'):
|
||||
self.cancelled = True
|
||||
if self.session.get('canceled'):
|
||||
self.canceled = True
|
||||
else:
|
||||
self.session['value'] = value
|
||||
self.session.save()
|
||||
return not self.cancelled
|
||||
|
||||
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)
|
||||
return not self.canceled
|
||||
|
||||
def destroy(self):
|
||||
pass
|
||||
|
|
|
@ -61,25 +61,29 @@
|
|||
$.ajax({
|
||||
url: '${url('progress', key=key)}',
|
||||
success: function(data) {
|
||||
$('#message').html(data.message);
|
||||
$('#total').html('('+data.maximum+' total)');
|
||||
$('#cancel button').show();
|
||||
if (data.complete) {
|
||||
clearInterval(updater);
|
||||
$('#cancel button').hide();
|
||||
$('#total').html('done!');
|
||||
$('#complete').css('width', '100%');
|
||||
$('#remaining').hide();
|
||||
$('#percentage').html('100%');
|
||||
location.href = data.success_url;
|
||||
} else {
|
||||
var width = parseInt(data.value) / parseInt(data.maximum);
|
||||
width = Math.round(100 * width);
|
||||
if (width > 0) {
|
||||
$('#complete').css('width', width+'%');
|
||||
$('#remaining').css('width', 'auto');
|
||||
if (data.complete || data.maximum) {
|
||||
$('#message').html(data.message);
|
||||
$('#total').html('('+data.maximum+' total)');
|
||||
$('#cancel button').show();
|
||||
if (data.complete) {
|
||||
clearInterval(updater);
|
||||
$('#cancel button').hide();
|
||||
$('#total').html('done!');
|
||||
$('#complete').css('width', '100%');
|
||||
$('#remaining').hide();
|
||||
$('#percentage').html('100%');
|
||||
location.href = data.success_url;
|
||||
} else {
|
||||
var width = parseInt(data.value) / parseInt(data.maximum);
|
||||
width = Math.round(100 * width);
|
||||
if (width > 0) {
|
||||
$('#complete').css('width', width+'%');
|
||||
$('#remaining').css('width', 'auto');
|
||||
}
|
||||
$('#percentage').html(width+'%');
|
||||
}
|
||||
$('#percentage').html(width+'%');
|
||||
} else if (data.error) {
|
||||
location.href = '${cancel_url}';
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -112,7 +116,7 @@
|
|||
|
||||
<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">
|
||||
<tr>
|
||||
|
|
|
@ -32,8 +32,10 @@ from edbob.pyramid.progress import get_progress_session
|
|||
def progress(request):
|
||||
key = request.matchdict['key']
|
||||
session = get_progress_session(request.session, key)
|
||||
if session.get('complete') and session.get('success_msg'):
|
||||
request.session.flash(session['success_msg'])
|
||||
if session.get('complete'):
|
||||
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
|
||||
|
||||
|
||||
|
@ -41,9 +43,9 @@ def cancel(request):
|
|||
key = request.matchdict['key']
|
||||
session = get_progress_session(request.session, key)
|
||||
session.clear()
|
||||
session['cancelled'] = True
|
||||
session['canceled'] = True
|
||||
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)
|
||||
return {}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue