Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2017-07-25 13:50:12 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-07-25 13:52:08 +0300
commitedc6bec9d60204cb81d2e7533402630b076d0d32 (patch)
treebd3740b59643e5195b6cb15a310430b65ccd40bf
parent35d9f681213c56429829afa01b13ee77d621e9d3 (diff)
PyAPI: Skip user scripts w/ factory-startup
Adds bpy.app.factory_startup, used to check if user scripts should be loaded.
-rw-r--r--release/scripts/modules/bpy/utils/__init__.py25
-rw-r--r--source/blender/python/intern/bpy_app.c2
2 files changed, 21 insertions, 6 deletions
diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py
index 703a61f72f5..6d3e807c2b4 100644
--- a/release/scripts/modules/bpy/utils/__init__.py
+++ b/release/scripts/modules/bpy/utils/__init__.py
@@ -72,6 +72,7 @@ import addon_utils as _addon_utils
_user_preferences = _bpy.context.user_preferences
_script_module_dirs = "startup", "modules"
+_is_factory_startup = _bpy.app.factory_startup
def _test_import(module_name, loaded_modules):
@@ -145,6 +146,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
:type refresh_scripts: bool
"""
use_time = use_class_register_check = _bpy.app.debug_python
+ use_user = not _is_factory_startup
if use_time:
import time
@@ -235,7 +237,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
from bpy_restrict_state import RestrictBlend
with RestrictBlend():
- for base_path in script_paths():
+ for base_path in script_paths(use_user=use_user):
for path_subdir in _script_module_dirs:
path = _os.path.join(base_path, path_subdir)
if _os.path.isdir(path):
@@ -307,7 +309,7 @@ def script_path_pref():
return _os.path.normpath(path) if path else None
-def script_paths(subdir=None, user_pref=True, check_all=False):
+def script_paths(subdir=None, user_pref=True, check_all=False, use_user=True):
"""
Returns a list of valid script paths.
@@ -331,13 +333,24 @@ def script_paths(subdir=None, user_pref=True, check_all=False):
if check_all:
# All possible paths, no duplicates, keep order.
+ if use_user:
+ test_paths = ('LOCAL', 'USER', 'SYSTEM')
+ else:
+ test_paths = ('LOCAL', 'SYSTEM')
+
base_paths = (
- *(path for path in (_os.path.join(resource_path(res), "scripts")
- for res in ('LOCAL', 'USER', 'SYSTEM')) if path not in base_paths),
+ *(path for path in (
+ _os.path.join(resource_path(res), "scripts")
+ for res in test_paths) if path not in base_paths),
*base_paths,
- )
+ )
+
+ if use_user:
+ test_paths = (*base_paths, script_path_user(), script_path_pref())
+ else:
+ test_paths = (*base_paths, script_path_pref())
- for path in (*base_paths, script_path_user(), script_path_pref()):
+ for path in test_paths:
if path:
path = _os.path.normpath(path)
if path not in scripts and _os.path.isdir(path):
diff --git a/source/blender/python/intern/bpy_app.c b/source/blender/python/intern/bpy_app.c
index 8b3464173d2..e47bf21f04b 100644
--- a/source/blender/python/intern/bpy_app.c
+++ b/source/blender/python/intern/bpy_app.c
@@ -89,6 +89,7 @@ static PyStructSequence_Field app_info_fields[] = {
{(char *)"version_cycle", (char *)"The release status of this build alpha/beta/rc/release"},
{(char *)"binary_path", (char *)"The location of blenders executable, useful for utilities that spawn new instances"},
{(char *)"background", (char *)"Boolean, True when blender is running without a user interface (started with -b)"},
+ {(char *)"factory_startup", (char *)"Boolean, True when blender is running with --factory-startup)"},
/* buildinfo */
{(char *)"build_date", (char *)"The date this blender instance was built"},
@@ -165,6 +166,7 @@ static PyObject *make_app_info(void)
SetStrItem(STRINGIFY(BLENDER_VERSION_CYCLE));
SetStrItem(BKE_appdir_program_path());
SetObjItem(PyBool_FromLong(G.background));
+ SetObjItem(PyBool_FromLong(G.factory_startup));
/* build info, use bytes since we can't assume _any_ encoding:
* see patch [#30154] for issue */