From 773a0c769d644bf5f84f8450eacf7f048f53747f Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 9 Aug 2017 11:56:25 -0500 Subject: [PATCH] Fix upgrade stdout handling if file doesn't exist yet plus some other tweaks.. --- tailbone/templates/upgrade.mako | 12 +++++++----- tailbone/views/master.py | 4 ++++ tailbone/views/upgrades.py | 15 ++++++++------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/tailbone/templates/upgrade.mako b/tailbone/templates/upgrade.mako index fad77dd3..bb512510 100644 --- a/tailbone/templates/upgrade.mako +++ b/tailbone/templates/upgrade.mako @@ -12,11 +12,13 @@ location.href = '${cancel_url}'; } else { - var stdout = $('.stdout'); - var height = $(window).height() - stdout.offset().top - 50; - stdout.height(height); - stdout.append(data.stdout); - stdout.animate({scrollTop: stdout.get(0).scrollHeight - height}, 250); + if (data.stdout) { + var stdout = $('.stdout'); + var height = $(window).height() - stdout.offset().top - 50; + stdout.height(height); + stdout.append(data.stdout); + stdout.animate({scrollTop: stdout.get(0).scrollHeight - height}, 250); + } if (data.complete || data.maximum) { $('#message').html(data.message); diff --git a/tailbone/views/master.py b/tailbone/views/master.py index 173d4ff8..6fb33572 100644 --- a/tailbone/views/master.py +++ b/tailbone/views/master.py @@ -895,6 +895,10 @@ class MasterView(View): progress.session['success_url'] = success_url progress.session.save() + def execute_error_message(self, error): + return "Execution of {} failed: {}: {}".format(self.get_model_title(), + type(error).__name__, error) + def get_execute_success_url(self, obj, **kwargs): return self.get_action_url('view', obj, **kwargs) diff --git a/tailbone/views/upgrades.py b/tailbone/views/upgrades.py index 0ef43e5f..458b2e5d 100644 --- a/tailbone/views/upgrades.py +++ b/tailbone/views/upgrades.py @@ -298,13 +298,14 @@ class UpgradeView(MasterView): path = self.rattail_config.upgrade_filepath(upgrade.uuid, filename='stdout.log') offset = session.get('stdout.offset', 0) - size = os.path.getsize(path) - offset - with open(path, 'rb') as f: - f.seek(offset) - chunk = f.read(size) - data['stdout'] = chunk.replace('\n', '
') - session['stdout.offset'] = offset + size - session.save() + if os.path.exists(path): + size = os.path.getsize(path) - offset + with open(path, 'rb') as f: + f.seek(offset) + chunk = f.read(size) + data['stdout'] = chunk.replace('\n', '
') + session['stdout.offset'] = offset + size + session.save() return data