diff --git a/edbob/console.py b/edbob/console.py index ed6896e..292afd0 100644 --- a/edbob/console.py +++ b/edbob/console.py @@ -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") diff --git a/edbob/pyramid/progress.py b/edbob/pyramid/progress.py index 65c79e7..ec6750d 100644 --- a/edbob/pyramid/progress.py +++ b/edbob/pyramid/progress.py @@ -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 diff --git a/edbob/pyramid/templates/progress.mako b/edbob/pyramid/templates/progress.mako index d33beb9..7626e46 100644 --- a/edbob/pyramid/templates/progress.mako +++ b/edbob/pyramid/templates/progress.mako @@ -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 @@
Working ...
+${initial_msg or "Working"} (please wait) ...