Merge branch 'develop' into bugfix/workfiles-tasks-selection

This commit is contained in:
Jakub Trllo 2024-06-18 13:19:55 +02:00 committed by GitHub
commit d3f03fc03d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 67 additions and 10 deletions

View file

@ -89,7 +89,7 @@ class FolderTypeItem:
def from_project_item(cls, folder_type_data):
return cls(
name=folder_type_data["name"],
short=folder_type_data["shortName"],
short=folder_type_data.get("shortName", ""),
icon=folder_type_data["icon"],
)

View file

@ -192,7 +192,11 @@ class FoldersQtModel(QtGui.QStandardItemModel):
or thread_id != self._current_refresh_thread.id
):
return
folder_items, folder_type_items = thread.get_result()
if thread.failed:
# TODO visualize that refresh failed
folder_items, folder_type_items = {}, {}
else:
folder_items, folder_type_items = thread.get_result()
self._fill_items(folder_items, folder_type_items)
self._current_refresh_thread = None

View file

@ -2,7 +2,9 @@ import os
import sys
import contextlib
import collections
import traceback
from functools import partial
from typing import Union, Any
from qtpy import QtWidgets, QtCore, QtGui
import qtawesome
@ -425,26 +427,39 @@ class RefreshThread(QtCore.QThread):
self._id = thread_id
self._callback = partial(func, *args, **kwargs)
self._exception = None
self._traceback = None
self._result = None
self.finished.connect(self._on_finish_callback)
@property
def id(self):
def id(self) -> str:
return self._id
@property
def failed(self):
def failed(self) -> bool:
return self._exception is not None
def run(self):
try:
self._result = self._callback()
except Exception as exc:
exc_type, exc_value, exc_traceback = sys.exc_info()
err_traceback = "".join(traceback.format_exception(
exc_type, exc_value, exc_traceback
))
print(err_traceback)
self._traceback = err_traceback
self._exception = exc
def get_result(self):
def get_result(self) -> Any:
return self._result
def get_exception(self) -> Union[BaseException, None]:
return self._exception
def get_traceback(self) -> Union[str, None]:
return self._traceback
def _on_finish_callback(self):
"""Trigger custom signal with thread id.

View file

@ -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)

View file

@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'blender' version."""
__version__ = "0.2.0"
__version__ = "0.2.1"

View file

@ -1,6 +1,6 @@
name = "blender"
title = "Blender"
version = "0.2.0"
version = "0.2.1"
client_dir = "ayon_blender"

View file

@ -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"]

View file

@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'deadline' version."""
__version__ = "0.2.0"
__version__ = "0.2.1"

View file

@ -1,6 +1,6 @@
name = "deadline"
title = "Deadline"
version = "0.2.0"
version = "0.2.1"
client_dir = "ayon_deadline"

View file

@ -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",