From 85f911cb5985e9c862ace1a1a1d7d37bd0a14240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 16 Nov 2018 17:12:30 +0100 Subject: [PATCH] Generalised saving/loading of project+manager-specific settings + added one Added the `flamenco_exclude_filter` setting to the set, and also made it easier to add new settings too. --- blender_cloud/flamenco/__init__.py | 7 ++++--- blender_cloud/project_specific.py | 14 +++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/blender_cloud/flamenco/__init__.py b/blender_cloud/flamenco/__init__.py index a0ec68c..25b94ec 100644 --- a/blender_cloud/flamenco/__init__.py +++ b/blender_cloud/flamenco/__init__.py @@ -84,9 +84,10 @@ def manager_updated(self: 'FlamencoManagerGroup', context): return with project_specific.mark_as_loading(): - prefs.flamenco_job_file_path = pppm['file_path'] - prefs.flamenco_job_output_path = pppm['output_path'] - prefs.flamenco_job_output_strip_components = pppm['output_strip_components'] + for name in project_specific.FLAMENCO_PER_PROJECT_PER_MANAGER: + if name not in pppm: + continue + setattr(prefs, name, pppm[name]) class FlamencoManagerGroup(PropertyGroup): diff --git a/blender_cloud/project_specific.py b/blender_cloud/project_specific.py index 945ca12..271b8ad 100644 --- a/blender_cloud/project_specific.py +++ b/blender_cloud/project_specific.py @@ -9,6 +9,15 @@ PROJECT_SPECIFIC_SIMPLE_PROPS = ( 'cloud_project_local_path', ) +# Names of BlenderCloudPreferences properties that are project-specific and +# Flamenco Manager-specific, and simple enough to store in a dict. +FLAMENCO_PER_PROJECT_PER_MANAGER = ( + 'flamenco_exclude_filter', + 'flamenco_job_file_path', + 'flamenco_job_output_path', + 'flamenco_job_output_strip_components', +) + log = logging.getLogger(__name__) project_settings_loading = 0 # counter, if > 0 then we're loading stuff. @@ -116,9 +125,8 @@ def store(_=None, _2=None): # Store per-project, per-manager settings for the current Manager. pppm = ps.get('flamenco_managers_settings', {}) pppm[prefs.flamenco_manager.manager] = { - 'file_path': prefs.flamenco_job_file_path, - 'output_path': prefs.flamenco_job_output_path, - 'output_strip_components': prefs.flamenco_job_output_strip_components} + name: getattr(prefs, name) for name in FLAMENCO_PER_PROJECT_PER_MANAGER + } ps['flamenco_managers_settings'] = pppm # IDPropertyGroup has no setdefault() method. # Store this project's settings in the preferences.