From e0042f6fe5853d8e03ec6b6138d0a422b22b5b23 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 28 Sep 2012 07:40:47 -0700 Subject: [PATCH] various progress tweaks --- edbob/console.py | 4 +-- edbob/pyramid/progress.py | 44 ++++++++------------------- edbob/pyramid/templates/progress.mako | 42 +++++++++++++------------ edbob/pyramid/views/progress.py | 10 +++--- 4 files changed, 44 insertions(+), 56 deletions(-) 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) ...

diff --git a/edbob/pyramid/views/progress.py b/edbob/pyramid/views/progress.py index 4d86c3a..224a00b 100644 --- a/edbob/pyramid/views/progress.py +++ b/edbob/pyramid/views/progress.py @@ -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 {}