From f6d797512aca38d74afcd8e49da2bce17edca416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 4 Sep 2018 17:37:07 +0200 Subject: [PATCH] Moved use of global variable to a context manager --- blender_cloud/project_specific.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/blender_cloud/project_specific.py b/blender_cloud/project_specific.py index f744708..4803d8a 100644 --- a/blender_cloud/project_specific.py +++ b/blender_cloud/project_specific.py @@ -1,5 +1,6 @@ """Handle saving and loading project-specific settings.""" +import contextlib import logging # Names of BlenderCloudPreferences properties that are both project-specific @@ -16,6 +17,17 @@ log = logging.getLogger(__name__) project_settings_loading = False +@contextlib.contextmanager +def mark_as_loading(): + """Sets project_settings_loading=True while the context is active.""" + global project_settings_loading + project_settings_loading = True + try: + yield + finally: + project_settings_loading = False + + def handle_project_update(_=None, _2=None): """Handles changing projects, which may cause extensions to be disabled/enabled. @@ -24,9 +36,7 @@ def handle_project_update(_=None, _2=None): from .blender import preferences, project_extensions - global project_settings_loading - project_settings_loading = True - try: + with mark_as_loading(): prefs = preferences() project_id = prefs.project.project log.info('Updating internal state to reflect extensions enabled on current project %s.', @@ -75,8 +85,6 @@ def handle_project_update(_=None, _2=None): prefs.flamenco_job_file_path = mps['file_path'] prefs.flamenco_job_output_path = mps['output_path'] prefs.flamenco_job_output_strip_components = mps['output_strip_components'] - finally: - project_settings_loading = False def store(_=None, _2=None):