From ff8e71c54223f9859b7e877c68703390cbe73204 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Wed, 3 May 2017 12:12:58 +0200 Subject: [PATCH] Fixed reloading after upgrading from 1.4.4. --- CHANGELOG.md | 5 +++++ blender_cloud/__init__.py | 23 +++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f4c59a..9462bf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Blender Cloud changelog +## Version 1.6.4 (in development) + +- Fixed reloading after upgrading from 1.4.4 (our last public release). + + ## Version 1.6.4 (2017-04-21) - Added file exclusion filter for Flamenco. A filter like "*.abc;*.mkv;*.mov" can be diff --git a/blender_cloud/__init__.py b/blender_cloud/__init__.py index 92ef6ed..582caae 100644 --- a/blender_cloud/__init__.py +++ b/blender_cloud/__init__.py @@ -65,21 +65,28 @@ def register(): def reload_mod(name): modname = '%s.%s' % (__name__, name) - module = importlib.reload(sys.modules[modname]) - sys.modules[modname] = module - return module + try: + old_module = sys.modules[modname] + except KeyError: + # Wasn't loaded before -- can happen after an upgrade. + new_module = importlib.import_module(modname) + else: + new_module = importlib.reload(old_module) + + sys.modules[modname] = new_module + return new_module reload_mod('blendfile') reload_mod('home_project') reload_mod('utils') - blender = reload_mod('blender') async_loop = reload_mod('async_loop') + flamenco = reload_mod('flamenco') + attract = reload_mod('attract') texture_browser = reload_mod('texture_browser') settings_sync = reload_mod('settings_sync') image_sharing = reload_mod('image_sharing') - attract = reload_mod('attract') - flamenco = reload_mod('flamenco') + blender = reload_mod('blender') else: from . import (blender, texture_browser, async_loop, settings_sync, blendfile, home_project, image_sharing, attract, flamenco) @@ -88,11 +95,11 @@ def register(): async_loop.register() flamenco.register() + attract.register() texture_browser.register() - blender.register() settings_sync.register() image_sharing.register() - attract.register() + blender.register() blender.handle_project_update()