diff --git a/client/ayon_core/tools/loader/control.py b/client/ayon_core/tools/loader/control.py index ee0b2f4b9d..f4b00e985f 100644 --- a/client/ayon_core/tools/loader/control.py +++ b/client/ayon_core/tools/loader/control.py @@ -3,14 +3,13 @@ import uuid import ayon_api +from ayon_core.lib import NestedCacheItem, CacheItem from ayon_core.lib.events import QueuedEventSystem from ayon_core.pipeline import Anatomy, get_current_context from ayon_core.host import ILoadHost from ayon_core.tools.common_models import ( ProjectsModel, HierarchyModel, - NestedCacheItem, - CacheItem, ThumbnailsModel, ) diff --git a/server_addon/blender/client/ayon_blender/plugins/publish/collect_file_dependencies.py b/server_addon/blender/client/ayon_blender/plugins/publish/collect_file_dependencies.py new file mode 100644 index 0000000000..ea36ab459c --- /dev/null +++ b/server_addon/blender/client/ayon_blender/plugins/publish/collect_file_dependencies.py @@ -0,0 +1,36 @@ +from pathlib import Path + +import pyblish.api + +import bpy + + +class CollectFileDependencies(pyblish.api.ContextPlugin): + """Gather all files referenced in this scene.""" + + label = "Collect File Dependencies" + order = pyblish.api.CollectorOrder - 0.49 + hosts = ["blender"] + families = ["render"] + + @classmethod + def apply_settings(cls, project_settings): + # Disable plug-in if not used for deadline submission anyway + settings = project_settings["deadline"]["publish"]["BlenderSubmitDeadline"] # noqa + cls.enabled = settings.get("asset_dependencies", True) + + def process(self, context): + dependencies = set() + + # Add alembic files as dependencies + for cache in bpy.data.cache_files: + dependencies.add( + Path(bpy.path.abspath(cache.filepath)).resolve().as_posix()) + + # Add image files as dependencies + for image in bpy.data.images: + if image.filepath: + dependencies.add(Path( + bpy.path.abspath(image.filepath)).resolve().as_posix()) + + context.data["fileDependencies"] = list(dependencies) diff --git a/server_addon/blender/client/ayon_blender/version.py b/server_addon/blender/client/ayon_blender/version.py index 365c44e71b..c21b06a8de 100644 --- a/server_addon/blender/client/ayon_blender/version.py +++ b/server_addon/blender/client/ayon_blender/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'blender' version.""" -__version__ = "0.2.0" +__version__ = "0.2.1" diff --git a/server_addon/blender/package.py b/server_addon/blender/package.py index 4e0ac112e1..1b595e22da 100644 --- a/server_addon/blender/package.py +++ b/server_addon/blender/package.py @@ -1,6 +1,6 @@ name = "blender" title = "Blender" -version = "0.2.0" +version = "0.2.1" client_dir = "ayon_blender" diff --git a/server_addon/deadline/client/ayon_deadline/plugins/publish/submit_blender_deadline.py b/server_addon/deadline/client/ayon_deadline/plugins/publish/submit_blender_deadline.py index 28bcc1e080..479dffdcc4 100644 --- a/server_addon/deadline/client/ayon_deadline/plugins/publish/submit_blender_deadline.py +++ b/server_addon/deadline/client/ayon_deadline/plugins/publish/submit_blender_deadline.py @@ -162,7 +162,7 @@ class BlenderSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline, return plugin_payload - def process_submission(self): + def process_submission(self, auth=None): instance = self._instance expected_files = instance.data["expectedFiles"] diff --git a/server_addon/deadline/server/settings/publish_plugins.py b/server_addon/deadline/server/settings/publish_plugins.py index 784ad2560b..85a93d49cd 100644 --- a/server_addon/deadline/server/settings/publish_plugins.py +++ b/server_addon/deadline/server/settings/publish_plugins.py @@ -270,6 +270,7 @@ class BlenderSubmitDeadlineModel(BaseSettingsModel): optional: bool = SettingsField(title="Optional") active: bool = SettingsField(title="Active") use_published: bool = SettingsField(title="Use Published scene") + asset_dependencies: bool = SettingsField(title="Use Asset dependencies") priority: int = SettingsField(title="Priority") chunk_size: int = SettingsField(title="Frame per Task") group: str = SettingsField("", title="Group Name") @@ -413,6 +414,7 @@ DEFAULT_DEADLINE_PLUGINS_SETTINGS = { "optional": False, "active": True, "use_published": True, + "asset_dependencies": True, "priority": 50, "chunk_size": 10, "group": "none",