From b0f7719add568222259d79bf79d24f64adb9b85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 26 Mar 2019 12:35:27 +0100 Subject: [PATCH] Fix `pyrna_enum_to_py: current value matches no enum` warnings --- blender_cloud/blender.py | 9 ++++----- blender_cloud/flamenco/__init__.py | 14 +++++++++++--- blender_cloud/project_specific.py | 2 +- blender_cloud/settings_sync.py | 13 +++++++++++-- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/blender_cloud/blender.py b/blender_cloud/blender.py index bb3792eb..bef4bbf 100644 --- a/blender_cloud/blender.py +++ b/blender_cloud/blender.py @@ -383,18 +383,17 @@ class BlenderCloudPreferences(AddonPreferences): icon='TRIA_UP').action = 'PUSH' versions = bss.available_blender_versions - version = bss.version if bss.status in {'NONE', 'IDLE'}: - if not versions or not version: + if not versions: row_pull.operator('pillar.sync', text='Find version to load', icon='TRIA_DOWN').action = 'REFRESH' else: props = row_pull.operator('pillar.sync', - text='Load %s settings' % version, + text='Load %s settings' % bss.version, icon='TRIA_DOWN') props.action = 'PULL' - props.blender_version = version + props.blender_version = bss.version row_pull.operator('pillar.sync', text='', icon=SYNC_SELECT_VERSION_ICON).action = 'SELECT' @@ -450,7 +449,7 @@ class BlenderCloudPreferences(AddonPreferences): manager_box = manager_split.row(align=True) if bcp.status in {'NONE', 'IDLE'}: - if not bcp.available_managers or not bcp.manager: + if not bcp.available_managers: manager_box.operator('flamenco.managers', text='Find Flamenco Managers', icon='FILE_REFRESH') diff --git a/blender_cloud/flamenco/__init__.py b/blender_cloud/flamenco/__init__.py index 0db96bf..99d58f9 100644 --- a/blender_cloud/flamenco/__init__.py +++ b/blender_cloud/flamenco/__init__.py @@ -199,18 +199,26 @@ class FLAMENCO_OT_fmanagers(async_loop.AsyncModalOperatorMixin, from ..blender import preferences prefs = preferences() + mypref = self.mypref self.log.info('Going to fetch managers for user %s', self.user_id) - self.mypref.status = 'FETCHING' + mypref.status = 'FETCHING' params = {'where': '{"projects" : "%s"}' % prefs.project.project} managers = await pillar_call(Manager.all, params) # We need to convert to regular dicts before storing in ID properties. # Also don't store more properties than we need. - as_list = [{'_id': p['_id'], 'name': p['name']} for p in managers['_items']] + as_list = [{'_id': man['_id'], 'name': man['name']} + for man in managers['_items']] + + current_manager = mypref.manager + mypref.available_managers = as_list + + # Prevent warnings about the current manager not being in the EnumProperty items. + if as_list and not any(man['_id'] == current_manager for man in as_list): + mypref.manager = as_list[0]['_id'] - self.mypref.available_managers = as_list self.quit() def quit(self): diff --git a/blender_cloud/project_specific.py b/blender_cloud/project_specific.py index 04be7cd..4e0bd19 100644 --- a/blender_cloud/project_specific.py +++ b/blender_cloud/project_specific.py @@ -114,7 +114,7 @@ def handle_project_update(_=None, _2=None): except TypeError: log.warning('manager %s for this project could not be found', flamenco_manager_id) elif prefs.flamenco_manager.available_managers: - prefs.flamenco_manager.manager = prefs.flamenco_manager.available_managers[0] + prefs.flamenco_manager.manager = prefs.flamenco_manager.available_managers[0]['_id'] def store(_=None, _2=None): diff --git a/blender_cloud/settings_sync.py b/blender_cloud/settings_sync.py index 68f25b2..4207c04 100644 --- a/blender_cloud/settings_sync.py +++ b/blender_cloud/settings_sync.py @@ -416,11 +416,20 @@ class PILLAR_OT_sync(pillar.PillarOperatorMixin, bss = bpy.context.window_manager.blender_sync_status bss.available_blender_versions = versions - if versions: + if not versions: # There are versions to sync, so we can remove the status message. # However, if there aren't any, the status message shows why, and # shouldn't be erased. - self.bss_report({'INFO'}, '') + return + + # Prevent warnings that the current value of the EnumProperty isn't valid. + current_version = '%d.%d' % bpy.app.version[:2] + if current_version in versions: + bss.version = current_version + else: + bss.version = versions[0] + + self.bss_report({'INFO'}, '') async def download_settings_file(self, fname: str, temp_dir: str): config_dir = pathlib.Path(bpy.utils.user_resource('CONFIG'))