From c2167056720a93764eb3f4409350820fba476330 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 20 Mar 2024 16:59:48 +0100 Subject: [PATCH 01/94] Blender: Implement USD extractor and loader --- client/ayon_core/hosts/blender/api/lib.py | 59 ++++++++++++++ client/ayon_core/hosts/blender/api/plugin.py | 3 +- .../blender/plugins/create/create_usd.py | 30 +++++++ .../hosts/blender/plugins/load/load_abc.py | 27 +++++-- .../plugins/publish/collect_instance.py | 2 +- .../blender/plugins/publish/extract_usd.py | 79 +++++++++++++++++++ 6 files changed, 190 insertions(+), 10 deletions(-) create mode 100644 client/ayon_core/hosts/blender/plugins/create/create_usd.py create mode 100644 client/ayon_core/hosts/blender/plugins/publish/extract_usd.py diff --git a/client/ayon_core/hosts/blender/api/lib.py b/client/ayon_core/hosts/blender/api/lib.py index 458a275b51..031a25e791 100644 --- a/client/ayon_core/hosts/blender/api/lib.py +++ b/client/ayon_core/hosts/blender/api/lib.py @@ -365,3 +365,62 @@ def maintained_time(): yield finally: bpy.context.scene.frame_current = current_time + + +def get_all_parents(obj): + """Get all recursive parents of object. + + Arguments: + obj (bpy.types.Object): Object to get all parents for. + + Returns: + List[bpy.types.Object]: All parents of object + + """ + result = [] + while True: + obj = obj.parent + if not obj: + break + result.append(obj) + return result + + +def get_highest_root(objects): + """Get the highest object (the least parents) among the objects. + + If multiple objects have the same amount of parents (or no parents) the + first object found in the input iterable will be returned. + + Note that this will *not* return objects outside of the input list, as + such it will not return the root of node from a child node. It is purely + intended to find the highest object among a list of objects. To instead + get the root from one object use, e.g. `get_all_parents(obj)[-1]` + + Arguments: + objects (List[bpy.types.Object]): Objects to find the highest root in. + + Returns: + Optional[bpy.types.Object]: First highest root found or None if no + `bpy.types.Object` found in input list. + + """ + included_objects = {obj.name_full for obj in objects} + num_parents_to_obj = {} + for obj in objects: + if isinstance(obj, bpy.types.Object): + parents = get_all_parents(obj) + # included parents + parents = [parent for parent in parents if + parent.name_full in included_objects] + if not parents: + # A node without parents must be a highest root + return obj + + num_parents_to_obj.setdefault(len(parents), obj) + + if not num_parents_to_obj: + return + + minimum_parent = min(num_parents_to_obj) + return num_parents_to_obj[minimum_parent] diff --git a/client/ayon_core/hosts/blender/api/plugin.py b/client/ayon_core/hosts/blender/api/plugin.py index 6c9bfb6569..383dd1e5c6 100644 --- a/client/ayon_core/hosts/blender/api/plugin.py +++ b/client/ayon_core/hosts/blender/api/plugin.py @@ -26,7 +26,8 @@ from .ops import ( ) from .lib import imprint -VALID_EXTENSIONS = [".blend", ".json", ".abc", ".fbx"] +VALID_EXTENSIONS = [".blend", ".json", ".abc", ".fbx", + ".usd", ".usdc", ".usda"] def prepare_scene_name( diff --git a/client/ayon_core/hosts/blender/plugins/create/create_usd.py b/client/ayon_core/hosts/blender/plugins/create/create_usd.py new file mode 100644 index 0000000000..2c2d0c46c6 --- /dev/null +++ b/client/ayon_core/hosts/blender/plugins/create/create_usd.py @@ -0,0 +1,30 @@ +"""Create a USD Export.""" + +from ayon_core.hosts.blender.api import plugin, lib + + +class CreateUSD(plugin.BaseCreator): + """Create USD Export""" + + identifier = "io.openpype.creators.blender.usd" + name = "usdMain" + label = "USD" + product_type = "usd" + icon = "gears" + + def create( + self, product_name: str, instance_data: dict, pre_create_data: dict + ): + # Run parent create method + collection = super().create( + product_name, instance_data, pre_create_data + ) + + if pre_create_data.get("use_selection"): + objects = lib.get_selection() + for obj in objects: + collection.objects.link(obj) + if obj.type == 'EMPTY': + objects.extend(obj.children) + + return collection diff --git a/client/ayon_core/hosts/blender/plugins/load/load_abc.py b/client/ayon_core/hosts/blender/plugins/load/load_abc.py index 938ae6106b..877cf0ca49 100644 --- a/client/ayon_core/hosts/blender/plugins/load/load_abc.py +++ b/client/ayon_core/hosts/blender/plugins/load/load_abc.py @@ -26,10 +26,11 @@ class CacheModelLoader(plugin.AssetLoader): Note: At least for now it only supports Alembic files. """ - product_types = {"model", "pointcache", "animation"} - representations = ["abc"] + product_types = {"model", "pointcache", "animation", "usd"} + representations = ["abc", "usd"] - label = "Load Alembic" + # TODO: Should USD loader be a separate loader instead? + label = "Load Alembic/USD" icon = "code-fork" color = "orange" @@ -53,10 +54,21 @@ class CacheModelLoader(plugin.AssetLoader): plugin.deselect_all() relative = bpy.context.preferences.filepaths.use_relative_paths - bpy.ops.wm.alembic_import( - filepath=libpath, - relative_path=relative - ) + + if any(libpath.lower().endswith(ext) + for ext in [".usd", ".usda", ".usdc"]): + # USD + bpy.ops.wm.usd_import( + filepath=libpath, + relative_path=relative + ) + + else: + # Alembic + bpy.ops.wm.alembic_import( + filepath=libpath, + relative_path=relative + ) imported = lib.get_selection() @@ -161,7 +173,6 @@ class CacheModelLoader(plugin.AssetLoader): self._link_objects(objects, asset_group, containers, asset_group) - product_type = context["product"]["productType"] asset_group[AVALON_PROPERTY] = { "schema": "openpype:container-2.0", "id": AVALON_CONTAINER_ID, diff --git a/client/ayon_core/hosts/blender/plugins/publish/collect_instance.py b/client/ayon_core/hosts/blender/plugins/publish/collect_instance.py index d47c69a270..314ffd368a 100644 --- a/client/ayon_core/hosts/blender/plugins/publish/collect_instance.py +++ b/client/ayon_core/hosts/blender/plugins/publish/collect_instance.py @@ -12,7 +12,7 @@ class CollectBlenderInstanceData(pyblish.api.InstancePlugin): order = pyblish.api.CollectorOrder hosts = ["blender"] families = ["model", "pointcache", "animation", "rig", "camera", "layout", - "blendScene"] + "blendScene", "usd"] label = "Collect Instance" def process(self, instance): diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py b/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py new file mode 100644 index 0000000000..74d0756133 --- /dev/null +++ b/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py @@ -0,0 +1,79 @@ +import os + +import bpy + +from ayon_core.pipeline import publish +from ayon_core.hosts.blender.api import plugin, lib + + +class ExtractUSD(publish.Extractor): + """Extract as USD.""" + + label = "Extract USD" + hosts = ["blender"] + families = ["usd"] + + def process(self, instance): + + # Ignore runtime instances (e.g. USD layers) + # TODO: This is better done via more specific `families` + if not instance.data.get("transientData", {}).get("instance_node"): + return + + # Define extract output file path + stagingdir = self.staging_dir(instance) + filename = f"{instance.name}.usd" + filepath = os.path.join(stagingdir, filename) + + # Perform extraction + self.log.debug("Performing extraction..") + + # Select all members to "export selected" + plugin.deselect_all() + + selected = [] + for obj in instance: + if isinstance(obj, bpy.types.Object): + obj.select_set(True) + selected.append(obj) + + root = lib.get_highest_root(objects=instance[:]) + if not root: + instance_node = instance.data["transientData"]["instance_node"] + raise publish.KnownPublishError( + f"No root object found in instance: {instance_node.name}" + ) + self.log.debug(f"Exporting using active root: {root.name}") + + context = plugin.create_blender_context( + active=root, selected=selected) + + # Export USD + bpy.ops.wm.usd_export( + context, + filepath=filepath, + selected_objects_only=True, + export_textures=False, + relative_paths=False, + export_animation=False, + export_hair=False, + export_uvmaps=True, + # TODO: add for new version of Blender (4+?) + # export_mesh_colors=True, + export_normals=True, + export_materials=True, + use_instancing=True + ) + + plugin.deselect_all() + + # Add representation + representation = { + 'name': 'usd', + 'ext': 'usd', + 'files': filename, + "stagingDir": stagingdir, + } + instance.data.setdefault("representations", []).append(representation) + self.log.debug("Extracted instance '%s' to: %s", + instance.name, representation) From f856f5237c2735eb04663e857ca81677a517f0cd Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 20 Mar 2024 17:07:14 +0100 Subject: [PATCH 02/94] Fix export for recent blender versions --- .../blender/plugins/publish/extract_usd.py | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py b/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py index 74d0756133..70092ded7b 100644 --- a/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py +++ b/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py @@ -49,21 +49,21 @@ class ExtractUSD(publish.Extractor): active=root, selected=selected) # Export USD - bpy.ops.wm.usd_export( - context, - filepath=filepath, - selected_objects_only=True, - export_textures=False, - relative_paths=False, - export_animation=False, - export_hair=False, - export_uvmaps=True, - # TODO: add for new version of Blender (4+?) - # export_mesh_colors=True, - export_normals=True, - export_materials=True, - use_instancing=True - ) + with bpy.context.temp_override(**context): + bpy.ops.wm.usd_export( + filepath=filepath, + selected_objects_only=True, + export_textures=False, + relative_paths=False, + export_animation=False, + export_hair=False, + export_uvmaps=True, + # TODO: add for new version of Blender (4+?) + # export_mesh_colors=True, + export_normals=True, + export_materials=True, + use_instancing=True + ) plugin.deselect_all() From 5660ed58d39ff4755b2db97511c65aaabfe147f7 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Wed, 20 Mar 2024 17:08:35 +0100 Subject: [PATCH 03/94] Fix refactor --- client/ayon_core/hosts/blender/plugins/load/load_abc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/hosts/blender/plugins/load/load_abc.py b/client/ayon_core/hosts/blender/plugins/load/load_abc.py index 877cf0ca49..2fec4cc78b 100644 --- a/client/ayon_core/hosts/blender/plugins/load/load_abc.py +++ b/client/ayon_core/hosts/blender/plugins/load/load_abc.py @@ -173,6 +173,7 @@ class CacheModelLoader(plugin.AssetLoader): self._link_objects(objects, asset_group, containers, asset_group) + product_type = context["product"]["productType"] asset_group[AVALON_PROPERTY] = { "schema": "openpype:container-2.0", "id": AVALON_CONTAINER_ID, From c6d72a6488b1c1588cc753ac831906a41892f067 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 28 Mar 2024 19:01:23 +0000 Subject: [PATCH 04/94] Add render farm button on write nodes. --- client/ayon_core/hosts/nuke/api/lib.py | 26 ++++ client/ayon_core/hosts/nuke/api/utils.py | 166 ++++++++++++++++++++++- 2 files changed, 191 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/nuke/api/lib.py b/client/ayon_core/hosts/nuke/api/lib.py index 4fcba8d2d4..22428fd657 100644 --- a/client/ayon_core/hosts/nuke/api/lib.py +++ b/client/ayon_core/hosts/nuke/api/lib.py @@ -1022,6 +1022,16 @@ def script_name(): return nuke.root().knob("name").value() +def add_button_render_farm(node): + name = "renderFarm" + label = "Render Farm" + value = "from ayon_core.hosts.nuke.api.utils import submit_headless_farm;" + value += "submit_headless_farm(nuke.thisNode())" + knob = nuke.PyScript_Knob(name, label, value) + knob.clearFlag(nuke.STARTLINE) + node.addKnob(knob) + + def add_button_write_to_read(node): name = "createReadNode" label = "Read From Rendered" @@ -1144,6 +1154,19 @@ def create_write_node( Return: node (obj): group node with avalon data as Knobs ''' + # Ensure name does not contain any invalid characters. + special_characters = set("!@#$%^&*()=[]{}|\\;',.<>/?~+-") + found_special_characters = [] + + # Check each character in the node name + for char in name: + if char in special_characters: + found_special_characters.append(char) + + msg = f"Special characters found in name \"{name}\": " + msg += f"{' '.join(found_special_characters)}" + assert not found_special_characters, msg + prenodes = prenodes or [] # filtering variables @@ -1268,6 +1291,9 @@ def create_write_node( link.setFlag(0x1000) GN.addKnob(link) + # Adding render farm submission button. + add_button_render_farm(GN) + # adding write to read button add_button_write_to_read(GN) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 1bfc1919fa..5a643d05d8 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -1,11 +1,18 @@ import os import re +import traceback +from datetime import datetime +import shutil import nuke -from ayon_core import resources +from pyblish import util from qtpy import QtWidgets +from ayon_core import resources +from ayon_core.pipeline import registered_host +from ayon_core.tools.utils import show_message_dialog + def set_context_favorites(favorites=None): """ Adding favorite folders to nuke's browser @@ -142,3 +149,160 @@ def is_headless(): bool: headless """ return QtWidgets.QApplication.instance() is None + + +def create_error_report(context): + error_message = "" + success = True + for result in context.data["results"]: + if result["success"]: + continue + + success = False + + err = result["error"] + formatted_traceback = "".join( + traceback.format_exception( + type(err), + err, + err.__traceback__ + ) + ) + fname = result["plugin"].__module__ + if 'File "", line' in formatted_traceback: + _, lineno, func, msg = err.traceback + fname = os.path.abspath(fname) + formatted_traceback = formatted_traceback.replace( + 'File "", line', + 'File "{0}", line'.format(fname) + ) + + err = result["error"] + error_message += "\n" + error_message += formatted_traceback + + return success, error_message + + +def submit_headless_farm(node): + # Ensure code is executed in root context. + if nuke.root() == nuke.thisNode(): + _submit_headless_farm(node) + else: + # If not in root context, move to the root context and then execute the + # code. + with nuke.root(): + _submit_headless_farm(node) + + +def _submit_headless_farm(node): + context = util.collect() + + success, error_report = create_error_report(context) + + if not success: + show_message_dialog( + "Collection Errors", error_report, level="critical" + ) + return + + # Find instance for node and workfile. + instance = None + instance_workfile = None + indexes_to_remove = [] + for count, Instance in enumerate(context): + if Instance.data["family"] == "workfile": + instance_workfile = Instance + continue + + instance_node = Instance.data["transientData"]["node"] + if node.name() == instance_node.name(): + instance = Instance + else: + indexes_to_remove.append(count) + + if instance is None: + show_message_dialog( + "Collection Error", + "Could not find the instance from the node.", + level="critical" + ) + return + + # Enable for farm publishing. + instance.data["farm"] = True + instance.data["transfer"] = False + + # Clear the families as we only want the main family, ei. no review etc. + instance.data["families"] = [] + + # Use the workfile instead of published. + publish_attributes = instance.data["publish_attributes"] + publish_attributes["NukeSubmitDeadline"]["use_published_workfile"] = False + + # Disable version validation. + instance.data.pop("latestVersion") + instance_workfile.data.pop("latestVersion") + + # Remove all other instances. + indexes_to_remove.sort(reverse=True) + for i in indexes_to_remove: + if 0 <= i < len(context): + del context[i] + + # Validate + util.validate(context) + + success, error_report = create_error_report(context) + + if not success: + show_message_dialog( + "Validation Errors", error_report, level="critical" + ) + return + + # Extraction. + util.extract(context) + + success, error_report = create_error_report(context) + + if not success: + show_message_dialog( + "Extraction Errors", error_report, level="critical" + ) + return + + # Save the workfile. + host = registered_host() + host.save_file(host.current_file()) + + # Copy the workfile to a timestamped copy. + current_datetime = datetime.now() + formatted_timestamp = current_datetime.strftime("%Y%m%d%H%M%S") + base, ext = os.path.splitext(host.current_file()) + + directory = os.path.join(os.path.dirname(base), "farm_submissions") + if not os.path.exists(directory): + os.makedirs(directory) + + filename = "{}_{}{}".format( + os.path.basename(base), formatted_timestamp, ext + ) + path = os.path.join(directory, filename).replace("\\", "/") + context.data["currentFile"] = path + shutil.copy(host.current_file(), path) + + # Continue to submission. + util.integrate(context) + + success, error_report = create_error_report(context) + + if not success: + show_message_dialog( + "Extraction Errors", error_report, level="critical" + ) + return + + show_message_dialog( + "Submission Successful", "Submission to the farm was successful." + ) From 78da85398d2ffb86673acf0f88dba94c54ad140a Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Thu, 4 Apr 2024 15:39:04 +0200 Subject: [PATCH 05/94] Refactor filename since it's now not only Alembic but also USD --- .../hosts/blender/plugins/load/{load_abc.py => load_cache.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename client/ayon_core/hosts/blender/plugins/load/{load_abc.py => load_cache.py} (100%) diff --git a/client/ayon_core/hosts/blender/plugins/load/load_abc.py b/client/ayon_core/hosts/blender/plugins/load/load_cache.py similarity index 100% rename from client/ayon_core/hosts/blender/plugins/load/load_abc.py rename to client/ayon_core/hosts/blender/plugins/load/load_cache.py From eca60b00068b891d0f5c9a80d632f7854a454e43 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 5 Apr 2024 17:34:28 +0100 Subject: [PATCH 06/94] Review feedback --- client/ayon_core/hosts/nuke/api/lib.py | 9 +++++---- client/ayon_core/hosts/nuke/api/utils.py | 16 +++------------- .../nuke/plugins/create/create_write_image.py | 5 ++++- .../plugins/create/create_write_prerender.py | 6 +++++- .../nuke/plugins/create/create_write_render.py | 6 +++++- .../nuke/server/settings/create_plugins.py | 6 +++++- server_addon/nuke/server/version.py | 2 +- 7 files changed, 28 insertions(+), 22 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/lib.py b/client/ayon_core/hosts/nuke/api/lib.py index 22428fd657..63e6ddef0f 100644 --- a/client/ayon_core/hosts/nuke/api/lib.py +++ b/client/ayon_core/hosts/nuke/api/lib.py @@ -1022,9 +1022,9 @@ def script_name(): return nuke.root().knob("name").value() -def add_button_render_farm(node): - name = "renderFarm" - label = "Render Farm" +def add_button_headless_farm_submission(node): + name = "headlessFarmSubmission" + label = "Headless Farm Submission" value = "from ayon_core.hosts.nuke.api.utils import submit_headless_farm;" value += "submit_headless_farm(nuke.thisNode())" knob = nuke.PyScript_Knob(name, label, value) @@ -1292,7 +1292,8 @@ def create_write_node( GN.addKnob(link) # Adding render farm submission button. - add_button_render_farm(GN) + if data.get("headless_farm_submission", False): + add_button_headless_farm_submission(GN) # adding write to read button add_button_write_to_read(GN) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 5a643d05d8..9528ad3d4c 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -209,8 +209,7 @@ def _submit_headless_farm(node): # Find instance for node and workfile. instance = None instance_workfile = None - indexes_to_remove = [] - for count, Instance in enumerate(context): + for Instance in context: if Instance.data["family"] == "workfile": instance_workfile = Instance continue @@ -219,7 +218,7 @@ def _submit_headless_farm(node): if node.name() == instance_node.name(): instance = Instance else: - indexes_to_remove.append(count) + Instance.data["active"] = False if instance is None: show_message_dialog( @@ -244,12 +243,6 @@ def _submit_headless_farm(node): instance.data.pop("latestVersion") instance_workfile.data.pop("latestVersion") - # Remove all other instances. - indexes_to_remove.sort(reverse=True) - for i in indexes_to_remove: - if 0 <= i < len(context): - del context[i] - # Validate util.validate(context) @@ -272,11 +265,8 @@ def _submit_headless_farm(node): ) return - # Save the workfile. - host = registered_host() - host.save_file(host.current_file()) - # Copy the workfile to a timestamped copy. + host = registered_host() current_datetime = datetime.now() formatted_timestamp = current_datetime.strftime("%Y%m%d%H%M%S") base, ext = os.path.splitext(host.current_file()) diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py b/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py index 770726e34f..046b99f6b0 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py +++ b/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py @@ -65,12 +65,15 @@ class CreateWriteImage(napi.NukeWriteCreator): ) def create_instance_node(self, product_name, instance_data): + settings = self.project_settings["nuke"]["create"]["CreateWriteImage"] + settings = settings["instance_attributes"] # add fpath_template write_data = { "creator": self.__class__.__name__, "productName": product_name, - "fpath_template": self.temp_rendering_path_template + "fpath_template": self.temp_rendering_path_template, + "headless_farm_submission": "headless_farm_submission" in settings } write_data.update(instance_data) diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py b/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py index 96ac2fac9c..df906c9c25 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py +++ b/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py @@ -46,11 +46,15 @@ class CreateWritePrerender(napi.NukeWriteCreator): return attr_defs def create_instance_node(self, product_name, instance_data): + settings = self.project_settings["nuke"]["create"] + settings = settings["CreateWritePrerender"]["instance_attributes"] + # add fpath_template write_data = { "creator": self.__class__.__name__, "productName": product_name, - "fpath_template": self.temp_rendering_path_template + "fpath_template": self.temp_rendering_path_template, + "headless_farm_submission": "headless_farm_submission" in settings } write_data.update(instance_data) diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py b/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py index 24bddb3d26..16bce64ec6 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py +++ b/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py @@ -40,11 +40,15 @@ class CreateWriteRender(napi.NukeWriteCreator): return attr_defs def create_instance_node(self, product_name, instance_data): + settings = self.project_settings["nuke"]["create"]["CreateWriteRender"] + settings = settings["instance_attributes"] + # add fpath_template write_data = { "creator": self.__class__.__name__, "productName": product_name, - "fpath_template": self.temp_rendering_path_template + "fpath_template": self.temp_rendering_path_template, + "headless_farm_submission": "headless_farm_submission" in settings } write_data.update(instance_data) diff --git a/server_addon/nuke/server/settings/create_plugins.py b/server_addon/nuke/server/settings/create_plugins.py index 6bdc5ee5ad..897a467118 100644 --- a/server_addon/nuke/server/settings/create_plugins.py +++ b/server_addon/nuke/server/settings/create_plugins.py @@ -12,7 +12,11 @@ def instance_attributes_enum(): return [ {"value": "reviewable", "label": "Reviewable"}, {"value": "farm_rendering", "label": "Farm rendering"}, - {"value": "use_range_limit", "label": "Use range limit"} + {"value": "use_range_limit", "label": "Use range limit"}, + { + "value": "headless_farm_submission", + "label": "Headless Farm Submission" + } ] diff --git a/server_addon/nuke/server/version.py b/server_addon/nuke/server/version.py index 569b1212f7..0c5c30071a 100644 --- a/server_addon/nuke/server/version.py +++ b/server_addon/nuke/server/version.py @@ -1 +1 @@ -__version__ = "0.1.10" +__version__ = "0.1.11" From 85140058ee6d4397485b33974abb78f7509a88f0 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 12 Apr 2024 15:34:47 +0100 Subject: [PATCH 07/94] Code cosmetics --- client/ayon_core/hosts/nuke/api/utils.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 9528ad3d4c..a11f6e023b 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -209,16 +209,16 @@ def _submit_headless_farm(node): # Find instance for node and workfile. instance = None instance_workfile = None - for Instance in context: - if Instance.data["family"] == "workfile": - instance_workfile = Instance + for _instance in context: + if _instance.data["family"] == "workfile": + instance_workfile = _instance continue - instance_node = Instance.data["transientData"]["node"] + instance_node = _instance.data["transientData"]["node"] if node.name() == instance_node.name(): - instance = Instance + instance = _instance else: - Instance.data["active"] = False + _instance.data["active"] = False if instance is None: show_message_dialog( From cd45e9a41c3be122d5b8b95ab11f1234dd77bda8 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 12 Apr 2024 15:43:31 +0100 Subject: [PATCH 08/94] docstring --- client/ayon_core/hosts/nuke/api/utils.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index a11f6e023b..56ba581e1c 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -196,6 +196,16 @@ def submit_headless_farm(node): def _submit_headless_farm(node): + """Headless farm submission + + This function prepares the context for farm submission, validates it, + extracts relevant data, copies the current workfile to a timestamped copy, + and submits the job to the farm. + + Args: + node (Node): The node for which the farm submission is being made. + """ + context = util.collect() success, error_report = create_error_report(context) From 4f70d30ea59c2ef6cde9383edea860a7bfc154bb Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 12 Apr 2024 15:47:12 +0100 Subject: [PATCH 09/94] docstring --- client/ayon_core/hosts/nuke/api/utils.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 56ba581e1c..94582f75f1 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -152,6 +152,19 @@ def is_headless(): def create_error_report(context): + """Create an error report based on the given pyblish context. + + This function iterates through the results in the context and formats any + errors into a comprehensive error report. + + Args: + context (dict): Pyblish context. + + Returns: + tuple: A tuple containing a boolean indicating success and a string + representing the error message. + """ + error_message = "" success = True for result in context.data["results"]: From 756e1f93642d47e8e96cdfb55b9d1b51f09b06b9 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 12 Apr 2024 16:42:29 +0100 Subject: [PATCH 10/94] Deactivate workfile instance. --- client/ayon_core/hosts/nuke/api/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 94582f75f1..8f0dfd0713 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -235,6 +235,7 @@ def _submit_headless_farm(node): for _instance in context: if _instance.data["family"] == "workfile": instance_workfile = _instance + _instance.data["active"] = False continue instance_node = _instance.data["transientData"]["node"] From 4fcab3ca36d1efc6d2e56c2ec89c72184a19e1d8 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Mon, 15 Apr 2024 10:26:22 +0100 Subject: [PATCH 11/94] Remove redundant code. --- client/ayon_core/hosts/nuke/api/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 8f0dfd0713..e608863648 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -254,7 +254,6 @@ def _submit_headless_farm(node): # Enable for farm publishing. instance.data["farm"] = True - instance.data["transfer"] = False # Clear the families as we only want the main family, ei. no review etc. instance.data["families"] = [] From b6a5eadf96828d3a84ff680ccbd590ce90ea11f6 Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Mon, 15 Apr 2024 12:26:22 +0100 Subject: [PATCH 12/94] Update client/ayon_core/hosts/nuke/api/lib.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/hosts/nuke/api/lib.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/lib.py b/client/ayon_core/hosts/nuke/api/lib.py index 63e6ddef0f..aa44f7c98c 100644 --- a/client/ayon_core/hosts/nuke/api/lib.py +++ b/client/ayon_core/hosts/nuke/api/lib.py @@ -1163,8 +1163,10 @@ def create_write_node( if char in special_characters: found_special_characters.append(char) - msg = f"Special characters found in name \"{name}\": " - msg += f"{' '.join(found_special_characters)}" + msg = ( + f"Special characters found in name \"{name}\": " + f"{' '.join(found_special_characters)}" + ) assert not found_special_characters, msg prenodes = prenodes or [] From acacf15723e8cf99fcc3cbe194e49612b6dcb53d Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 30 Apr 2024 15:24:34 +0100 Subject: [PATCH 13/94] Code cosmetics --- .../hosts/nuke/plugins/create/create_write_render.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py b/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py index 16bce64ec6..5340fbdecc 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py +++ b/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py @@ -41,14 +41,16 @@ class CreateWriteRender(napi.NukeWriteCreator): def create_instance_node(self, product_name, instance_data): settings = self.project_settings["nuke"]["create"]["CreateWriteRender"] - settings = settings["instance_attributes"] + instance_attributes = settings["instance_attributes"] # add fpath_template write_data = { "creator": self.__class__.__name__, "productName": product_name, "fpath_template": self.temp_rendering_path_template, - "headless_farm_submission": "headless_farm_submission" in settings + "headless_farm_submission": ( + "headless_farm_submission" in instance_attributes + ) } write_data.update(instance_data) From 0462d38445f9b4a66635e0ba3bcd9dfd4cf28a46 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 2 May 2024 15:11:56 +0100 Subject: [PATCH 14/94] Use pyblish plugins instead of code outside of publishing. --- client/ayon_core/hosts/nuke/api/utils.py | 107 ++---------------- .../plugins/publish/collect_headless_farm.py | 41 +++++++ .../plugins/publish/extract_headless_farm.py | 35 ++++++ 3 files changed, 88 insertions(+), 95 deletions(-) create mode 100644 client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py create mode 100644 client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index e608863648..a5d9bfb323 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -1,17 +1,16 @@ import os import re import traceback -from datetime import datetime -import shutil import nuke -from pyblish import util +from pyblish import util, api from qtpy import QtWidgets from ayon_core import resources from ayon_core.pipeline import registered_host from ayon_core.tools.utils import show_message_dialog +from ayon_core.pipeline.create import CreateContext def set_context_favorites(favorites=None): @@ -219,7 +218,16 @@ def _submit_headless_farm(node): node (Node): The node for which the farm submission is being made. """ - context = util.collect() + host = registered_host() + create_context = CreateContext(host) + context = api.Context() + context.data["create_context"] = create_context + # Used in pyblish plugin to determine which instance to publish. + context.data["node_name"] = node.name() + # Used in pyblish plugins to determine whether to run or not. + context.data["headless_farm"] = True + + context = util.publish(context) success, error_report = create_error_report(context) @@ -228,94 +236,3 @@ def _submit_headless_farm(node): "Collection Errors", error_report, level="critical" ) return - - # Find instance for node and workfile. - instance = None - instance_workfile = None - for _instance in context: - if _instance.data["family"] == "workfile": - instance_workfile = _instance - _instance.data["active"] = False - continue - - instance_node = _instance.data["transientData"]["node"] - if node.name() == instance_node.name(): - instance = _instance - else: - _instance.data["active"] = False - - if instance is None: - show_message_dialog( - "Collection Error", - "Could not find the instance from the node.", - level="critical" - ) - return - - # Enable for farm publishing. - instance.data["farm"] = True - - # Clear the families as we only want the main family, ei. no review etc. - instance.data["families"] = [] - - # Use the workfile instead of published. - publish_attributes = instance.data["publish_attributes"] - publish_attributes["NukeSubmitDeadline"]["use_published_workfile"] = False - - # Disable version validation. - instance.data.pop("latestVersion") - instance_workfile.data.pop("latestVersion") - - # Validate - util.validate(context) - - success, error_report = create_error_report(context) - - if not success: - show_message_dialog( - "Validation Errors", error_report, level="critical" - ) - return - - # Extraction. - util.extract(context) - - success, error_report = create_error_report(context) - - if not success: - show_message_dialog( - "Extraction Errors", error_report, level="critical" - ) - return - - # Copy the workfile to a timestamped copy. - host = registered_host() - current_datetime = datetime.now() - formatted_timestamp = current_datetime.strftime("%Y%m%d%H%M%S") - base, ext = os.path.splitext(host.current_file()) - - directory = os.path.join(os.path.dirname(base), "farm_submissions") - if not os.path.exists(directory): - os.makedirs(directory) - - filename = "{}_{}{}".format( - os.path.basename(base), formatted_timestamp, ext - ) - path = os.path.join(directory, filename).replace("\\", "/") - context.data["currentFile"] = path - shutil.copy(host.current_file(), path) - - # Continue to submission. - util.integrate(context) - - success, error_report = create_error_report(context) - - if not success: - show_message_dialog( - "Extraction Errors", error_report, level="critical" - ) - return - - show_message_dialog( - "Submission Successful", "Submission to the farm was successful." - ) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py new file mode 100644 index 0000000000..9bcdd199f3 --- /dev/null +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -0,0 +1,41 @@ +import pyblish.api + + +class CollectHeadlessFarm(pyblish.api.InstancePlugin): + """Setup instances for headless farm submission.""" + + order = pyblish.api.CollectorOrder + 0.4999 + label = "Collect Headless Farm" + hosts = ["nuke"] + + def process(self, instance): + if not instance.context.data.get("headless_farm", False): + return + + if instance.data["family"] == "workfile": + instance.data["active"] = False + + # Disable version validation. + instance.data.pop("latestVersion") + return + + # Filter out all other instances. + node = instance.data["transientData"]["node"] + if node.name() != instance.context.data["node_name"]: + instance.data["active"] = False + return + + # Enable for farm publishing. + instance.data["farm"] = True + + # Clear the families as we only want the main family, ei. no review + # etc. + instance.data["families"] = [] + + # Use the workfile instead of published. + settings = instance.data["publish_attributes"] + settings = settings["NukeSubmitDeadline"] + settings["use_published_workfile"] = False + + # Disable version validation. + instance.data.pop("latestVersion") diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py new file mode 100644 index 0000000000..be74a05392 --- /dev/null +++ b/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py @@ -0,0 +1,35 @@ +import os +from datetime import datetime +import shutil + +import pyblish.api + +from ayon_core.pipeline import registered_host + + +class ExtractHeadlessFarm(pyblish.api.InstancePlugin): + """Copy the workfile to a timestamped copy.""" + + order = pyblish.api.ExtractorOrder + 0.499 + label = "Extract Headless Farm" + hosts = ["nuke"] + + def process(self, instance): + if not instance.context.data.get("headless_farm", False): + return + + host = registered_host() + current_datetime = datetime.now() + formatted_timestamp = current_datetime.strftime("%Y%m%d%H%M%S") + base, ext = os.path.splitext(host.current_file()) + + directory = os.path.join(os.path.dirname(base), "farm_submissions") + if not os.path.exists(directory): + os.makedirs(directory) + + filename = "{}_{}{}".format( + os.path.basename(base), formatted_timestamp, ext + ) + path = os.path.join(directory, filename).replace("\\", "/") + instance.context.data["currentFile"] = path + shutil.copy(host.current_file(), path) From 81c75841db70d5ac601fc86f18e003f44d4ec11d Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 2 May 2024 15:14:04 +0100 Subject: [PATCH 15/94] increment nuke package --- server_addon/nuke/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server_addon/nuke/package.py b/server_addon/nuke/package.py index bf03c4e7e7..e522b9fb5d 100644 --- a/server_addon/nuke/package.py +++ b/server_addon/nuke/package.py @@ -1,3 +1,3 @@ name = "nuke" title = "Nuke" -version = "0.1.11" +version = "0.1.12" From a3c2bb1415b320fad1eabcc617c5d6643e719f8d Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 2 May 2024 15:52:38 +0100 Subject: [PATCH 16/94] Show successfull message. --- client/ayon_core/hosts/nuke/api/utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index a5d9bfb323..5ab2e15552 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -236,3 +236,7 @@ def _submit_headless_farm(node): "Collection Errors", error_report, level="critical" ) return + + show_message_dialog( + "Submission Successful", "Submission to the farm was successful." + ) From e5fbb20bdc51a1c7bb8c9707cd3f659ce26e583d Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 2 May 2024 15:52:52 +0100 Subject: [PATCH 17/94] Skip script version increment --- .../hosts/nuke/plugins/publish/increment_script_version.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py b/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py index 6b0be42ba1..f20748b034 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py @@ -13,6 +13,8 @@ class IncrementScriptVersion(pyblish.api.ContextPlugin): hosts = ['nuke'] def process(self, context): + if context.data.get("headless_farm", False): + return assert all(result["success"] for result in context.data["results"]), ( "Publishing not successful so version is not increased.") From ce13e8629fa63c0b6649061400eccfc09d18fcb1 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 3 May 2024 09:49:52 +0100 Subject: [PATCH 18/94] Full imports --- client/ayon_core/hosts/nuke/api/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 5ab2e15552..8eb0339a89 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -4,7 +4,8 @@ import traceback import nuke -from pyblish import util, api +import pyblish.util +import pyblish.api from qtpy import QtWidgets from ayon_core import resources @@ -220,14 +221,14 @@ def _submit_headless_farm(node): host = registered_host() create_context = CreateContext(host) - context = api.Context() + context = pyblish.api.Context() context.data["create_context"] = create_context # Used in pyblish plugin to determine which instance to publish. context.data["node_name"] = node.name() # Used in pyblish plugins to determine whether to run or not. context.data["headless_farm"] = True - context = util.publish(context) + context = pyblish.util.publish(context) success, error_report = create_error_report(context) From 6bb585c6a92b62f70fbfb2355ed45e3ff70f0d9a Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 3 May 2024 20:31:40 +0200 Subject: [PATCH 19/94] Change label to `Load Cache` --- client/ayon_core/hosts/blender/plugins/load/load_cache.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/ayon_core/hosts/blender/plugins/load/load_cache.py b/client/ayon_core/hosts/blender/plugins/load/load_cache.py index 65d45e6fc4..30c847f89d 100644 --- a/client/ayon_core/hosts/blender/plugins/load/load_cache.py +++ b/client/ayon_core/hosts/blender/plugins/load/load_cache.py @@ -29,8 +29,7 @@ class CacheModelLoader(plugin.AssetLoader): product_types = {"model", "pointcache", "animation", "usd"} representations = {"abc", "usd"} - # TODO: Should USD loader be a separate loader instead? - label = "Load Alembic/USD" + label = "Load Cache" icon = "code-fork" color = "orange" From bd0509a2c64d9488e5c79dbf9ea27e1b885b064d Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 3 May 2024 20:42:16 +0200 Subject: [PATCH 20/94] Allow publishing USD from `model` family and expose it in settings --- .../hosts/blender/plugins/publish/extract_usd.py | 11 +++++++++++ .../blender/server/settings/publish_plugins.py | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py b/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py index 70092ded7b..1d4fa3d7ac 100644 --- a/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py +++ b/client/ayon_core/hosts/blender/plugins/publish/extract_usd.py @@ -77,3 +77,14 @@ class ExtractUSD(publish.Extractor): instance.data.setdefault("representations", []).append(representation) self.log.debug("Extracted instance '%s' to: %s", instance.name, representation) + + +class ExtractModelUSD(ExtractUSD): + """Extract model as USD.""" + + label = "Extract USD (Model)" + hosts = ["blender"] + families = ["model"] + + # Driven by settings + optional = True diff --git a/server_addon/blender/server/settings/publish_plugins.py b/server_addon/blender/server/settings/publish_plugins.py index e998d7b057..8db8c5be46 100644 --- a/server_addon/blender/server/settings/publish_plugins.py +++ b/server_addon/blender/server/settings/publish_plugins.py @@ -151,6 +151,10 @@ class PublishPluginsModel(BaseSettingsModel): default_factory=ExtractPlayblastModel, title="Extract Playblast" ) + ExtractModelUSD: ValidatePluginModel = SettingsField( + default_factory=ValidatePluginModel, + title="Extract Model USD" + ) DEFAULT_BLENDER_PUBLISH_SETTINGS = { @@ -348,5 +352,10 @@ DEFAULT_BLENDER_PUBLISH_SETTINGS = { }, indent=4 ) + }, + "ExtractModelUSD": { + "enabled": True, + "optional": True, + "active": True } } From 8131b53983301b0d5f4e3a5a6a8fd42eff0eedbb Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 3 May 2024 20:42:41 +0200 Subject: [PATCH 21/94] Bump blender server addon version --- server_addon/blender/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server_addon/blender/package.py b/server_addon/blender/package.py index 667076e533..d2c02a4909 100644 --- a/server_addon/blender/package.py +++ b/server_addon/blender/package.py @@ -1,3 +1,3 @@ name = "blender" title = "Blender" -version = "0.1.8" +version = "0.1.9" From ade52e789702f7d7f57a6898d13e75e79537653c Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Fri, 3 May 2024 23:16:34 +0300 Subject: [PATCH 22/94] add model product type creator --- .../houdini/plugins/create/create_model.py | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 client/ayon_core/hosts/houdini/plugins/create/create_model.py diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_model.py b/client/ayon_core/hosts/houdini/plugins/create/create_model.py new file mode 100644 index 0000000000..1f32ccde45 --- /dev/null +++ b/client/ayon_core/hosts/houdini/plugins/create/create_model.py @@ -0,0 +1,144 @@ +# -*- coding: utf-8 -*- +"""Creator plugin for creating Model product type. + +Note: + Currently, This creator plugin is the same as 'create_pointcache.py' + But renaming the product type to 'model'. + + It's purpose to support + Maya (load/publish model from maya to/from houdini). + + It's considered to support multiple representations in the future. +""" + +from ayon_core.hosts.houdini.api import plugin +from ayon_core.lib import BoolDef + +import hou + + + +class CreateModel(plugin.HoudiniCreator): + """Create Model""" + identifier = "io.openpype.creators.houdini.model" + label = "Model" + product_type = "model" + icon = "cube" + + def get_publish_families(self): + return ["model", "abc"] + + def create(self, product_name, instance_data, pre_create_data): + instance_data.pop("active", None) + instance_data.update({"node_type": "alembic"}) + creator_attributes = instance_data.setdefault( + "creator_attributes", dict()) + creator_attributes["farm"] = pre_create_data["farm"] + + instance = super(CreateModel, self).create( + product_name, + instance_data, + pre_create_data) + + instance_node = hou.node(instance.get("instance_node")) + parms = { + "use_sop_path": True, + "build_from_path": True, + "path_attrib": "path", + "prim_to_detail_pattern": "cbId", + "format": 2, + "facesets": 0, + "filename": hou.text.expandString( + "$HIP/pyblish/{}.abc".format(product_name)) + } + + if self.selected_nodes: + selected_node = self.selected_nodes[0] + + # Although Houdini allows ObjNode path on `sop_path` for the + # the ROP node we prefer it set to the SopNode path explicitly + + # Allow sop level paths (e.g. /obj/geo1/box1) + if isinstance(selected_node, hou.SopNode): + parms["sop_path"] = selected_node.path() + self.log.debug( + "Valid SopNode selection, 'SOP Path' in ROP will be set to '%s'." + % selected_node.path() + ) + + # Allow object level paths to Geometry nodes (e.g. /obj/geo1) + # but do not allow other object level nodes types like cameras, etc. + elif isinstance(selected_node, hou.ObjNode) and \ + selected_node.type().name() in ["geo"]: + + # get the output node with the minimum + # 'outputidx' or the node with display flag + sop_path = self.get_obj_output(selected_node) + + if sop_path: + parms["sop_path"] = sop_path.path() + self.log.debug( + "Valid ObjNode selection, 'SOP Path' in ROP will be set to " + "the child path '%s'." + % sop_path.path() + ) + + if not parms.get("sop_path", None): + self.log.debug( + "Selection isn't valid. 'SOP Path' in ROP will be empty." + ) + else: + self.log.debug( + "No Selection. 'SOP Path' in ROP will be empty." + ) + + instance_node.setParms(parms) + instance_node.parm("trange").set(1) + + # Explicitly set f1 and f2 to frame start. + # Which forces the rop node to export one frame. + instance_node.parmTuple('f').deleteAllKeyframes() + fstart = int(hou.hscriptExpression("$FSTART")) + instance_node.parmTuple('f').set((fstart, fstart, 1)) + + # Lock any parameters in this list + to_lock = ["prim_to_detail_pattern"] + self.lock_parameters(instance_node, to_lock) + + def get_network_categories(self): + return [ + hou.ropNodeTypeCategory(), + hou.sopNodeTypeCategory() + ] + + def get_obj_output(self, obj_node): + """Find output node with the smallest 'outputidx'.""" + + outputs = obj_node.subnetOutputs() + + # if obj_node is empty + if not outputs: + return + + # if obj_node has one output child whether its + # sop output node or a node with the render flag + elif len(outputs) == 1: + return outputs[0] + + # if there are more than one, then it have multiple output nodes + # return the one with the minimum 'outputidx' + else: + return min(outputs, + key=lambda node: node.evalParm('outputidx')) + + def get_instance_attr_defs(self): + return [ + BoolDef("farm", + label="Submitting to Farm", + default=False) + ] + + def get_pre_create_attr_defs(self): + attrs = super().get_pre_create_attr_defs() + # Use same attributes as for instance attributes + return attrs + self.get_instance_attr_defs() From ba57d6db6d37f3a8a5d24b02b4f5a3d66530eb7c Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Fri, 3 May 2024 23:18:33 +0300 Subject: [PATCH 23/94] add essential publish plugins for model product type --- .../plugins/publish/collect_cache_farm.py | 7 +-- .../plugins/publish/collect_chunk_size.py | 2 +- .../plugins/publish/collect_output_node.py | 3 +- .../validate_export_is_a_single_frame.py | 60 +++++++++++++++++++ .../publish/validate_mesh_is_static.py | 6 +- .../publish/validate_mkpaths_toggled.py | 2 +- .../publish/validate_sop_output_node.py | 2 +- 7 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_cache_farm.py b/client/ayon_core/hosts/houdini/plugins/publish/collect_cache_farm.py index 040ad68a1a..dc433f0f58 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/collect_cache_farm.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/collect_cache_farm.py @@ -10,7 +10,7 @@ class CollectDataforCache(pyblish.api.InstancePlugin): order = pyblish.api.CollectorOrder + 0.04 families = ["ass", "pointcache", "mantraifd", "redshiftproxy", - "vdbcache"] + "vdbcache", "model"] hosts = ["houdini"] targets = ["local", "remote"] label = "Collect Data for Cache" @@ -42,10 +42,7 @@ class CollectDataforCache(pyblish.api.InstancePlugin): cache_files = {"_": instance.data["files"]} # Convert instance family to pointcache if it is bgeo or abc # because ??? - for family in instance.data["families"]: - if family == "bgeo" or "abc": - instance.data["productType"] = "pointcache" - break + self.log.debug(instance.data["families"]) instance.data.update({ "plugin": "Houdini", "publish": True diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_chunk_size.py b/client/ayon_core/hosts/houdini/plugins/publish/collect_chunk_size.py index 3e2561dd6f..f0913f2f0a 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/collect_chunk_size.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/collect_chunk_size.py @@ -10,7 +10,7 @@ class CollectChunkSize(pyblish.api.InstancePlugin, order = pyblish.api.CollectorOrder + 0.05 families = ["ass", "pointcache", "vdbcache", "mantraifd", - "redshiftproxy"] + "redshiftproxy", "model"] hosts = ["houdini"] targets = ["local", "remote"] label = "Collect Chunk Size" diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_output_node.py b/client/ayon_core/hosts/houdini/plugins/publish/collect_output_node.py index 26381e065e..289222f32b 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/collect_output_node.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/collect_output_node.py @@ -15,7 +15,8 @@ class CollectOutputSOPPath(pyblish.api.InstancePlugin): "usd", "usdrender", "redshiftproxy", - "staticMesh" + "staticMesh", + "model" ] hosts = ["houdini"] diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py b/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py new file mode 100644 index 0000000000..6775699adf --- /dev/null +++ b/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +"""Validator for checking that export is a single frame.""" +import pyblish.api +from ayon_core.pipeline import ( + PublishValidationError, + OptionalPyblishPluginMixin +) +from ayon_core.pipeline.publish import ValidateContentsOrder +from ayon_core.hosts.houdini.api.action import SelectInvalidAction + + +class ValidateSingleFrame(pyblish.api.InstancePlugin, + OptionalPyblishPluginMixin): + """Validate Export is a Single Frame. + + It checks if rop node is exporting one frame. + This is mainly for Model product type. + """ + + families = ["model"] + hosts = ["houdini"] + label = "Validate Single Frame" + order = ValidateContentsOrder + 0.1 + actions = [SelectInvalidAction] + + def process(self, instance): + + invalid = self.get_invalid(instance) + if invalid: + nodes = [n.path() for n in invalid] + raise PublishValidationError( + "See log for details. " + "Invalid nodes: {0}".format(nodes) + ) + + @classmethod + def get_invalid(cls, instance): + + invalid = [] + + frame_start = instance.data.get("frameStartHandle") + frame_end = instance.data.get("frameEndHandle") + + # This happens if instance node has no 'trange' parameter. + if (frame_start or frame_end) is None: + cls.log.debug( + "No frame data, skipping check.." + ) + return + + if frame_start != frame_end: + invalid.append(instance.data["instance_node"]) + cls.log.error( + "Invalid frame range on '%s'." + "You should use the same frame number for 'f1' " + "and 'f2' parameters.", + instance.data["instance_node"].path() + ) + + return invalid diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_mesh_is_static.py b/client/ayon_core/hosts/houdini/plugins/publish/validate_mesh_is_static.py index 289e00339b..9652367bfe 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/validate_mesh_is_static.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/validate_mesh_is_static.py @@ -16,9 +16,13 @@ class ValidateMeshIsStatic(pyblish.api.InstancePlugin, """Validate mesh is static. It checks if output node is time dependent. + this avoids getting different output from ROP node when extracted + from a different frame than the first frame. + (Might be overly restrictive though) """ - families = ["staticMesh"] + families = ["staticMesh", + "model"] hosts = ["houdini"] label = "Validate Mesh is Static" order = ValidateContentsOrder + 0.1 diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_mkpaths_toggled.py b/client/ayon_core/hosts/houdini/plugins/publish/validate_mkpaths_toggled.py index 38f1c4e176..5e59eb505f 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/validate_mkpaths_toggled.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/validate_mkpaths_toggled.py @@ -7,7 +7,7 @@ class ValidateIntermediateDirectoriesChecked(pyblish.api.InstancePlugin): """Validate Create Intermediate Directories is enabled on ROP node.""" order = pyblish.api.ValidatorOrder - families = ["pointcache", "camera", "vdbcache"] + families = ["pointcache", "camera", "vdbcache", "model"] hosts = ["houdini"] label = "Create Intermediate Directories Checked" diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_sop_output_node.py b/client/ayon_core/hosts/houdini/plugins/publish/validate_sop_output_node.py index 61cf7596ac..d67192d28e 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/validate_sop_output_node.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/validate_sop_output_node.py @@ -22,7 +22,7 @@ class ValidateSopOutputNode(pyblish.api.InstancePlugin): """ order = pyblish.api.ValidatorOrder - families = ["pointcache", "vdbcache"] + families = ["pointcache", "vdbcache", "model"] hosts = ["houdini"] label = "Validate Output Node (SOP)" actions = [SelectROPAction, SelectInvalidAction] From 8a971f393c3a2d2f9cecb6afbd910d8f17a76d25 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 7 May 2024 09:25:31 +0100 Subject: [PATCH 24/94] CollectHeadlessFarm > ContextPlugin --- .../plugins/publish/collect_headless_farm.py | 57 ++++++++++--------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index 9bcdd199f3..b9b5acf0bc 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -1,41 +1,42 @@ import pyblish.api -class CollectHeadlessFarm(pyblish.api.InstancePlugin): +class CollectHeadlessFarm(pyblish.api.ContextPlugin): """Setup instances for headless farm submission.""" order = pyblish.api.CollectorOrder + 0.4999 label = "Collect Headless Farm" hosts = ["nuke"] - def process(self, instance): - if not instance.context.data.get("headless_farm", False): - return + def process(self, context): + for instance in context: + if not instance.context.data.get("headless_farm", False): + continue - if instance.data["family"] == "workfile": - instance.data["active"] = False + if instance.data["family"] == "workfile": + instance.data["active"] = False + + # Disable version validation. + instance.data.pop("latestVersion") + continue + + # Filter out all other instances. + node = instance.data["transientData"]["node"] + if node.name() != instance.context.data["node_name"]: + instance.data["active"] = False + continue + + # Enable for farm publishing. + instance.data["farm"] = True + + # Clear the families as we only want the main family, ei. no review + # etc. + instance.data["families"] = [] + + # Use the workfile instead of published. + settings = instance.data["publish_attributes"] + settings = settings["NukeSubmitDeadline"] + settings["use_published_workfile"] = False # Disable version validation. instance.data.pop("latestVersion") - return - - # Filter out all other instances. - node = instance.data["transientData"]["node"] - if node.name() != instance.context.data["node_name"]: - instance.data["active"] = False - return - - # Enable for farm publishing. - instance.data["farm"] = True - - # Clear the families as we only want the main family, ei. no review - # etc. - instance.data["families"] = [] - - # Use the workfile instead of published. - settings = instance.data["publish_attributes"] - settings = settings["NukeSubmitDeadline"] - settings["use_published_workfile"] = False - - # Disable version validation. - instance.data.pop("latestVersion") From 978e7d1be5388fcf3f6bde665917913599f63e7f Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Tue, 7 May 2024 09:46:44 +0100 Subject: [PATCH 25/94] Update client/ayon_core/hosts/nuke/api/lib.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/hosts/nuke/api/lib.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/lib.py b/client/ayon_core/hosts/nuke/api/lib.py index 2703307400..868c0ada34 100644 --- a/client/ayon_core/hosts/nuke/api/lib.py +++ b/client/ayon_core/hosts/nuke/api/lib.py @@ -1155,13 +1155,9 @@ def create_write_node( node (obj): group node with avalon data as Knobs ''' # Ensure name does not contain any invalid characters. - special_characters = set("!@#$%^&*()=[]{}|\\;',.<>/?~+-") - found_special_characters = [] - - # Check each character in the node name - for char in name: - if char in special_characters: - found_special_characters.append(char) + special_chars = re.escape("!@#$%^&*()=[]{}|\\;',.<>/?~+-") + special_chars_regex = re.compile(f"[{special_chars}]") + found_special_characters = list(special_chars_regex.findall(name)) msg = ( f"Special characters found in name \"{name}\": " From e9dc1d4a05efb9c03459da3d652f6806e63f6120 Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Tue, 7 May 2024 09:48:58 +0100 Subject: [PATCH 26/94] Update client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../hosts/nuke/plugins/publish/collect_headless_farm.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index b9b5acf0bc..73d2450351 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -9,10 +9,10 @@ class CollectHeadlessFarm(pyblish.api.ContextPlugin): hosts = ["nuke"] def process(self, context): - for instance in context: - if not instance.context.data.get("headless_farm", False): - continue + if not context.data.get("headless_farm", False): + return + for instance in context: if instance.data["family"] == "workfile": instance.data["active"] = False From 72116cd976f6fa5ccab07b902cf3a6e60d7d3700 Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Tue, 7 May 2024 09:51:42 +0100 Subject: [PATCH 27/94] Update client/ayon_core/hosts/nuke/api/utils.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/hosts/nuke/api/utils.py | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 8eb0339a89..3752028c91 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -173,26 +173,9 @@ def create_error_report(context): success = False - err = result["error"] - formatted_traceback = "".join( - traceback.format_exception( - type(err), - err, - err.__traceback__ - ) - ) - fname = result["plugin"].__module__ - if 'File "", line' in formatted_traceback: - _, lineno, func, msg = err.traceback - fname = os.path.abspath(fname) - formatted_traceback = formatted_traceback.replace( - 'File "", line', - 'File "{0}", line'.format(fname) - ) - err = result["error"] error_message += "\n" - error_message += formatted_traceback + error_message += err.formatted_traceback return success, error_message From 5b591b602fe8119f68d7cf4656812c5c0cc2911f Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 7 May 2024 10:07:27 +0100 Subject: [PATCH 28/94] Ensure CreateInstance is active. --- client/ayon_core/hosts/nuke/api/utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 3752028c91..08e2630cbd 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -204,6 +204,14 @@ def _submit_headless_farm(node): host = registered_host() create_context = CreateContext(host) + + # Ensure CreateInstance is enabled. + for instance in create_context.instances: + if node.name() != instance.transient_data["node"].name(): + continue + + instance.data["active"] = True + context = pyblish.api.Context() context.data["create_context"] = create_context # Used in pyblish plugin to determine which instance to publish. From 54500dbb59d9e6c4ab0ad5625f568aea64c01548 Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Tue, 7 May 2024 10:08:29 +0100 Subject: [PATCH 29/94] Update client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../hosts/nuke/plugins/publish/collect_headless_farm.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index 73d2450351..4bdfc28fe9 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -15,9 +15,6 @@ class CollectHeadlessFarm(pyblish.api.ContextPlugin): for instance in context: if instance.data["family"] == "workfile": instance.data["active"] = False - - # Disable version validation. - instance.data.pop("latestVersion") continue # Filter out all other instances. From fd71818d4683b47a3aa43a61e2323fd570dbd5e3 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 7 May 2024 10:11:54 +0100 Subject: [PATCH 30/94] Remove redundant code --- .../hosts/nuke/plugins/publish/collect_headless_farm.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index 4bdfc28fe9..f2af3551d9 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -34,6 +34,3 @@ class CollectHeadlessFarm(pyblish.api.ContextPlugin): settings = instance.data["publish_attributes"] settings = settings["NukeSubmitDeadline"] settings["use_published_workfile"] = False - - # Disable version validation. - instance.data.pop("latestVersion") From d8eb451887e17ad3eb3ca794d29d8f442159cc62 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 7 May 2024 10:30:55 +0100 Subject: [PATCH 31/94] Illicit feedback --- .../hosts/nuke/plugins/publish/collect_headless_farm.py | 6 ++---- .../hosts/nuke/plugins/publish/extract_headless_farm.py | 1 + .../deadline/plugins/publish/submit_nuke_deadline.py | 7 +++++-- client/ayon_core/plugins/publish/validate_version.py | 9 +++++++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index f2af3551d9..dfd294cebc 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -28,9 +28,7 @@ class CollectHeadlessFarm(pyblish.api.ContextPlugin): # Clear the families as we only want the main family, ei. no review # etc. - instance.data["families"] = [] + instance.data["families"] = ["headless_farm"] # Use the workfile instead of published. - settings = instance.data["publish_attributes"] - settings = settings["NukeSubmitDeadline"] - settings["use_published_workfile"] = False + instance.data["use_published_workfile"] = False diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py index be74a05392..003e51aa1a 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py @@ -13,6 +13,7 @@ class ExtractHeadlessFarm(pyblish.api.InstancePlugin): order = pyblish.api.ExtractorOrder + 0.499 label = "Extract Headless Farm" hosts = ["nuke"] + families = ["headless_farm"] def process(self, instance): if not instance.context.data.get("headless_farm", False): diff --git a/client/ayon_core/modules/deadline/plugins/publish/submit_nuke_deadline.py b/client/ayon_core/modules/deadline/plugins/publish/submit_nuke_deadline.py index d70cb75bf3..751fb4c46a 100644 --- a/client/ayon_core/modules/deadline/plugins/publish/submit_nuke_deadline.py +++ b/client/ayon_core/modules/deadline/plugins/publish/submit_nuke_deadline.py @@ -128,8 +128,11 @@ class NukeSubmitDeadline(pyblish.api.InstancePlugin, render_path = instance.data['path'] script_path = context.data["currentFile"] - use_published_workfile = instance.data["attributeValues"].get( - "use_published_workfile", self.use_published_workfile + use_published_workfile = instance.data.get( + "use_published_workfile", + instance.data["attributeValues"].get( + "use_published_workfile", self.use_published_workfile + ) ) if use_published_workfile: script_path = self._get_published_workfile_path(context) diff --git a/client/ayon_core/plugins/publish/validate_version.py b/client/ayon_core/plugins/publish/validate_version.py index 9031194e8c..25a5757330 100644 --- a/client/ayon_core/plugins/publish/validate_version.py +++ b/client/ayon_core/plugins/publish/validate_version.py @@ -1,8 +1,10 @@ import pyblish.api -from ayon_core.pipeline.publish import PublishValidationError +from ayon_core.pipeline.publish import ( + PublishValidationError, OptionalPyblishPluginMixin +) -class ValidateVersion(pyblish.api.InstancePlugin): +class ValidateVersion(pyblish.api.InstancePlugin, OptionalPyblishPluginMixin): """Validate instance version. AYON does not allow overwriting previously published versions. @@ -18,6 +20,9 @@ class ValidateVersion(pyblish.api.InstancePlugin): active = True def process(self, instance): + if not self.is_active(instance.data): + return + version = instance.data.get("version") latest_version = instance.data.get("latestVersion") From ad7d24c5cfbba3d27f14a69b167ec71b8bc6e819 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 7 May 2024 12:09:20 +0100 Subject: [PATCH 32/94] Disable instances as early as possible. --- .../plugins/publish/collect_headless_farm.py | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index dfd294cebc..5a3d3cc0de 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -4,7 +4,8 @@ import pyblish.api class CollectHeadlessFarm(pyblish.api.ContextPlugin): """Setup instances for headless farm submission.""" - order = pyblish.api.CollectorOrder + 0.4999 + # Needs to be after CollectFromCreateContext + order = pyblish.api.CollectorOrder - 0.4 label = "Collect Headless Farm" hosts = ["nuke"] @@ -23,12 +24,24 @@ class CollectHeadlessFarm(pyblish.api.ContextPlugin): instance.data["active"] = False continue - # Enable for farm publishing. - instance.data["farm"] = True + instance.data["families"].append("headless_farm") - # Clear the families as we only want the main family, ei. no review - # etc. - instance.data["families"] = ["headless_farm"] - # Use the workfile instead of published. - instance.data["use_published_workfile"] = False +class SetupHeadlessFarm(pyblish.api.InstancePlugin): + """Setup instance for headless farm submission.""" + + order = pyblish.api.CollectorOrder + 0.4999 + label = "Setup Headless Farm" + hosts = ["nuke"] + families = ["headless_farm"] + + def process(self, instance): + # Enable for farm publishing. + instance.data["farm"] = True + + # Clear the families as we only want the main family, ei. no review + # etc. + instance.data["families"] = ["headless_farm"] + + # Use the workfile instead of published. + instance.data["use_published_workfile"] = False From 475d1db69bc518522b57f270f174799842f6d031 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Thu, 9 May 2024 15:05:54 +0300 Subject: [PATCH 33/94] add 'model' product type to 'collect_instnaces_type' --- .../hosts/houdini/plugins/create/create_model.py | 3 --- ...intcache_type.py => collect_instances_type.py} | 15 +++++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) rename client/ayon_core/hosts/houdini/plugins/publish/{collect_pointcache_type.py => collect_instances_type.py} (51%) diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_model.py b/client/ayon_core/hosts/houdini/plugins/create/create_model.py index 1f32ccde45..74d067b133 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_model.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_model.py @@ -25,9 +25,6 @@ class CreateModel(plugin.HoudiniCreator): product_type = "model" icon = "cube" - def get_publish_families(self): - return ["model", "abc"] - def create(self, product_name, instance_data, pre_create_data): instance_data.pop("active", None) instance_data.update({"node_type": "alembic"}) diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_pointcache_type.py b/client/ayon_core/hosts/houdini/plugins/publish/collect_instances_type.py similarity index 51% rename from client/ayon_core/hosts/houdini/plugins/publish/collect_pointcache_type.py rename to client/ayon_core/hosts/houdini/plugins/publish/collect_instances_type.py index 3323e97c20..07851387fe 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/collect_pointcache_type.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/collect_instances_type.py @@ -1,21 +1,24 @@ -"""Collector for pointcache types. +"""Collector for different types. -This will add additional family to pointcache instance based on +This will add additional families to different instance based on the creator_identifier parameter. """ import pyblish.api class CollectPointcacheType(pyblish.api.InstancePlugin): - """Collect data type for pointcache instance.""" + """Collect data type for different instances.""" order = pyblish.api.CollectorOrder hosts = ["houdini"] - families = ["pointcache"] - label = "Collect type of pointcache" + families = ["pointcache", "model"] + label = "Collect instances types" def process(self, instance): if instance.data["creator_identifier"] == "io.openpype.creators.houdini.bgeo": # noqa: E501 instance.data["families"] += ["bgeo"] - elif instance.data["creator_identifier"] == "io.openpype.creators.houdini.pointcache": # noqa: E501 + elif instance.data["creator_identifier"] in { + "io.openpype.creators.houdini.pointcache", + "io.openpype.creators.houdini.model" + }: instance.data["families"] += ["abc"] From b2b8cb132f78b4bc807e0dcaf0ef71d906f10f73 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Mon, 13 May 2024 17:59:23 +0300 Subject: [PATCH 34/94] add CreateModel --- server_addon/houdini/package.py | 2 +- server_addon/houdini/server/settings/create.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/server_addon/houdini/package.py b/server_addon/houdini/package.py index 6c81eba439..06b034da38 100644 --- a/server_addon/houdini/package.py +++ b/server_addon/houdini/package.py @@ -1,3 +1,3 @@ name = "houdini" title = "Houdini" -version = "0.2.14" +version = "0.2.15" diff --git a/server_addon/houdini/server/settings/create.py b/server_addon/houdini/server/settings/create.py index 203ca4f9d6..cd1e110c23 100644 --- a/server_addon/houdini/server/settings/create.py +++ b/server_addon/houdini/server/settings/create.py @@ -57,6 +57,9 @@ class CreatePluginsModel(BaseSettingsModel): CreateMantraROP: CreatorModel = SettingsField( default_factory=CreatorModel, title="Create Mantra ROP") + CreateModel: CreatorModel = SettingsField( + default_factory=CreatorModel, + title="Create Model") CreatePointCache: CreatorModel = SettingsField( default_factory=CreatorModel, title="Create PointCache (Abc)") @@ -124,6 +127,10 @@ DEFAULT_HOUDINI_CREATE_SETTINGS = { "enabled": True, "default_variants": ["Main"] }, + "CreateModel": { + "enabled": True, + "default_variants": ["Main"] + }, "CreatePointCache": { "enabled": True, "default_variants": ["Main"] From 242326093eaa77728d15785904a3db92496579e2 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 17 May 2024 13:12:43 +0200 Subject: [PATCH 35/94] adding nuke into CollectDeadlinePools Refactor host and family lists in CollectDeadlinePools plugin. Added "nuke" to hosts and "prerender" to families. --- .../deadline/plugins/publish/collect_pools.py | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/client/ayon_core/modules/deadline/plugins/publish/collect_pools.py b/client/ayon_core/modules/deadline/plugins/publish/collect_pools.py index 6923c2b16b..2592d358e5 100644 --- a/client/ayon_core/modules/deadline/plugins/publish/collect_pools.py +++ b/client/ayon_core/modules/deadline/plugins/publish/collect_pools.py @@ -26,27 +26,32 @@ class CollectDeadlinePools(pyblish.api.InstancePlugin, order = pyblish.api.CollectorOrder + 0.420 label = "Collect Deadline Pools" - hosts = ["aftereffects", - "fusion", - "harmony" - "nuke", - "maya", - "max", - "houdini"] + hosts = [ + "aftereffects", + "fusion", + "harmony", + "maya", + "max", + "houdini", + "nuke", + ] - families = ["render", - "rendering", - "render.farm", - "renderFarm", - "renderlayer", - "maxrender", - "usdrender", - "redshift_rop", - "arnold_rop", - "mantra_rop", - "karma_rop", - "vray_rop", - "publish.hou"] + families = [ + "render", + "prerender", + "rendering", + "render.farm", + "renderFarm", + "renderlayer", + "maxrender", + "usdrender", + "redshift_rop", + "arnold_rop", + "mantra_rop", + "karma_rop", + "vray_rop", + "publish.hou", + ] primary_pool = None secondary_pool = None From 45611ea27e8e3f8106df6dc45075a02e2a1145fd Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 20 May 2024 12:35:42 +0200 Subject: [PATCH 36/94] call update on viewport instead on view --- client/ayon_core/tools/launcher/ui/actions_widget.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index a225827418..d03aceb009 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -359,7 +359,8 @@ class ActionsWidget(QtWidgets.QWidget): def _on_model_refresh(self): self._proxy_model.sort(0) # Force repaint all items - self._view.update() + viewport = self._view.viewport() + viewport.update() def _on_animation(self): time_now = time.time() From d968c36c15487529ff198dab9b9cbc0a69ada520 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 21 May 2024 15:18:09 +0200 Subject: [PATCH 37/94] moved clockify code to server addon --- .../clockify/client/ayon_clockify}/__init__.py | 0 .../clockify/client/ayon_clockify}/clockify_api.py | 0 .../clockify/client/ayon_clockify}/clockify_module.py | 0 .../clockify/client/ayon_clockify}/constants.py | 0 .../ayon_clockify}/ftrack/server/action_clockify_sync_server.py | 0 .../ayon_clockify}/ftrack/user/action_clockify_sync_local.py | 0 .../client/ayon_clockify}/launcher_actions/ClockifyStart.py | 0 .../client/ayon_clockify}/launcher_actions/ClockifySync.py | 0 .../clockify/client/ayon_clockify}/widgets.py | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/__init__.py (100%) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/clockify_api.py (100%) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/clockify_module.py (100%) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/constants.py (100%) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/ftrack/server/action_clockify_sync_server.py (100%) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/ftrack/user/action_clockify_sync_local.py (100%) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/launcher_actions/ClockifyStart.py (100%) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/launcher_actions/ClockifySync.py (100%) rename {client/ayon_core/modules/clockify => server_addon/clockify/client/ayon_clockify}/widgets.py (100%) diff --git a/client/ayon_core/modules/clockify/__init__.py b/server_addon/clockify/client/ayon_clockify/__init__.py similarity index 100% rename from client/ayon_core/modules/clockify/__init__.py rename to server_addon/clockify/client/ayon_clockify/__init__.py diff --git a/client/ayon_core/modules/clockify/clockify_api.py b/server_addon/clockify/client/ayon_clockify/clockify_api.py similarity index 100% rename from client/ayon_core/modules/clockify/clockify_api.py rename to server_addon/clockify/client/ayon_clockify/clockify_api.py diff --git a/client/ayon_core/modules/clockify/clockify_module.py b/server_addon/clockify/client/ayon_clockify/clockify_module.py similarity index 100% rename from client/ayon_core/modules/clockify/clockify_module.py rename to server_addon/clockify/client/ayon_clockify/clockify_module.py diff --git a/client/ayon_core/modules/clockify/constants.py b/server_addon/clockify/client/ayon_clockify/constants.py similarity index 100% rename from client/ayon_core/modules/clockify/constants.py rename to server_addon/clockify/client/ayon_clockify/constants.py diff --git a/client/ayon_core/modules/clockify/ftrack/server/action_clockify_sync_server.py b/server_addon/clockify/client/ayon_clockify/ftrack/server/action_clockify_sync_server.py similarity index 100% rename from client/ayon_core/modules/clockify/ftrack/server/action_clockify_sync_server.py rename to server_addon/clockify/client/ayon_clockify/ftrack/server/action_clockify_sync_server.py diff --git a/client/ayon_core/modules/clockify/ftrack/user/action_clockify_sync_local.py b/server_addon/clockify/client/ayon_clockify/ftrack/user/action_clockify_sync_local.py similarity index 100% rename from client/ayon_core/modules/clockify/ftrack/user/action_clockify_sync_local.py rename to server_addon/clockify/client/ayon_clockify/ftrack/user/action_clockify_sync_local.py diff --git a/client/ayon_core/modules/clockify/launcher_actions/ClockifyStart.py b/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifyStart.py similarity index 100% rename from client/ayon_core/modules/clockify/launcher_actions/ClockifyStart.py rename to server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifyStart.py diff --git a/client/ayon_core/modules/clockify/launcher_actions/ClockifySync.py b/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifySync.py similarity index 100% rename from client/ayon_core/modules/clockify/launcher_actions/ClockifySync.py rename to server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifySync.py diff --git a/client/ayon_core/modules/clockify/widgets.py b/server_addon/clockify/client/ayon_clockify/widgets.py similarity index 100% rename from client/ayon_core/modules/clockify/widgets.py rename to server_addon/clockify/client/ayon_clockify/widgets.py From 5300ea1526f10085d0f44980347ea9dbe077d75e Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 21 May 2024 16:01:00 +0200 Subject: [PATCH 38/94] fix imports and naming --- .../clockify/client/ayon_clockify/__init__.py | 4 ++-- .../{clockify_module.py => addon.py} | 20 +++++++++--------- .../client/ayon_clockify/clockify_api.py | 8 ++++--- .../server/action_clockify_sync_server.py | 6 ++++-- .../ftrack/user/action_clockify_sync_local.py | 21 +++++++------------ .../launcher_actions/ClockifyStart.py | 3 ++- .../launcher_actions/ClockifySync.py | 2 +- .../clockify/client/ayon_clockify/version.py | 3 +++ server_addon/clockify/package.py | 2 +- 9 files changed, 36 insertions(+), 33 deletions(-) rename server_addon/clockify/client/ayon_clockify/{clockify_module.py => addon.py} (93%) create mode 100644 server_addon/clockify/client/ayon_clockify/version.py diff --git a/server_addon/clockify/client/ayon_clockify/__init__.py b/server_addon/clockify/client/ayon_clockify/__init__.py index 98834b516c..75fb87494e 100644 --- a/server_addon/clockify/client/ayon_clockify/__init__.py +++ b/server_addon/clockify/client/ayon_clockify/__init__.py @@ -1,5 +1,5 @@ -from .clockify_module import ClockifyModule +from .addon import ClockifyAddon __all__ = ( - "ClockifyModule", + "ClockifyAddon", ) diff --git a/server_addon/clockify/client/ayon_clockify/clockify_module.py b/server_addon/clockify/client/ayon_clockify/addon.py similarity index 93% rename from server_addon/clockify/client/ayon_clockify/clockify_module.py rename to server_addon/clockify/client/ayon_clockify/addon.py index d2ee4f1e1e..ce91b2be70 100644 --- a/server_addon/clockify/client/ayon_clockify/clockify_module.py +++ b/server_addon/clockify/client/ayon_clockify/addon.py @@ -2,12 +2,12 @@ import os import threading import time -from ayon_core.modules import AYONAddon, ITrayModule, IPluginPaths +from ayon_core.addon import AYONAddon, ITrayAddon, IPluginPaths from .constants import CLOCKIFY_FTRACK_USER_PATH, CLOCKIFY_FTRACK_SERVER_PATH -class ClockifyModule(AYONAddon, ITrayModule, IPluginPaths): +class ClockifyAddon(AYONAddon, ITrayAddon, IPluginPaths): name = "clockify" def initialize(self, studio_settings): @@ -31,7 +31,7 @@ class ClockifyModule(AYONAddon, ITrayModule, IPluginPaths): # TimersManager attributes # - set `timers_manager_connector` only in `tray_init` self.timers_manager_connector = None - self._timers_manager_module = None + self._timer_manager_addon = None @property def clockify_api(self): @@ -87,7 +87,7 @@ class ClockifyModule(AYONAddon, ITrayModule, IPluginPaths): return {"actions": [actions_path]} def get_ftrack_event_handler_paths(self): - """Function for Ftrack module to add ftrack event handler paths.""" + """Function for ftrack addon to add ftrack event handler paths.""" return { "user": [CLOCKIFY_FTRACK_USER_PATH], "server": [CLOCKIFY_FTRACK_SERVER_PATH], @@ -206,19 +206,19 @@ class ClockifyModule(AYONAddon, ITrayModule, IPluginPaths): self.action_stop_timer.setVisible(self.bool_timer_run) # --- TimersManager connection methods --- - def register_timers_manager(self, timer_manager_module): + def register_timers_manager(self, timer_manager_addon): """Store TimersManager for future use.""" - self._timers_manager_module = timer_manager_module + self._timer_manager_addon = timer_manager_addon def timer_started(self, data): """Tell TimersManager that timer started.""" - if self._timers_manager_module is not None: - self._timers_manager_module.timer_started(self.id, data) + if self._timer_manager_addon is not None: + self._timer_manager_addon.timer_started(self.id, data) def timer_stopped(self): """Tell TimersManager that timer stopped.""" - if self._timers_manager_module is not None: - self._timers_manager_module.timer_stopped(self.id) + if self._timer_manager_addon is not None: + self._timer_manager_addon.timer_stopped(self.id) def stop_timer(self): """Called from TimersManager to stop timer.""" diff --git a/server_addon/clockify/client/ayon_clockify/clockify_api.py b/server_addon/clockify/client/ayon_clockify/clockify_api.py index 2e1d8f008f..38ca6cdb66 100644 --- a/server_addon/clockify/client/ayon_clockify/clockify_api.py +++ b/server_addon/clockify/client/ayon_clockify/clockify_api.py @@ -1,15 +1,17 @@ import os import json import datetime + import requests + +from ayon_core.lib.local_settings import AYONSecureRegistry +from ayon_core.lib import Logger + from .constants import ( CLOCKIFY_ENDPOINT, ADMIN_PERMISSION_NAMES, ) -from ayon_core.lib.local_settings import AYONSecureRegistry -from ayon_core.lib import Logger - class ClockifyAPI: log = Logger.get_logger(__name__) diff --git a/server_addon/clockify/client/ayon_clockify/ftrack/server/action_clockify_sync_server.py b/server_addon/clockify/client/ayon_clockify/ftrack/server/action_clockify_sync_server.py index 7854f0ceba..ed83fed287 100644 --- a/server_addon/clockify/client/ayon_clockify/ftrack/server/action_clockify_sync_server.py +++ b/server_addon/clockify/client/ayon_clockify/ftrack/server/action_clockify_sync_server.py @@ -1,7 +1,9 @@ import os import json -from openpype_modules.ftrack.lib import ServerAction -from openpype_modules.clockify.clockify_api import ClockifyAPI + +from ayon_clockify.clockify_api import ClockifyAPI + +from ayon_ftrack.lib import ServerAction class SyncClockifyServer(ServerAction): diff --git a/server_addon/clockify/client/ayon_clockify/ftrack/user/action_clockify_sync_local.py b/server_addon/clockify/client/ayon_clockify/ftrack/user/action_clockify_sync_local.py index 4701653a0b..05a94e56fd 100644 --- a/server_addon/clockify/client/ayon_clockify/ftrack/user/action_clockify_sync_local.py +++ b/server_addon/clockify/client/ayon_clockify/ftrack/user/action_clockify_sync_local.py @@ -1,25 +1,20 @@ import json -from openpype_modules.ftrack.lib import BaseAction, statics_icon -from openpype_modules.clockify.clockify_api import ClockifyAPI +from ayon_clockify.clockify_api import ClockifyAPI +from ayon_ftrack.lib import BaseAction, statics_icon class SyncClockifyLocal(BaseAction): - '''Synchronise project names and task types.''' + """Synchronise project names and task types.""" - #: Action identifier. - identifier = 'clockify.sync.local' - #: Action label. - label = 'Sync To Clockify (local)' - #: Action description. - description = 'Synchronise data to Clockify workspace' - #: roles that are allowed to register this action + identifier = "clockify.sync.local" + label = "Sync To Clockify" + description = "Synchronise data to Clockify workspace" role_list = ["Administrator", "project Manager"] - #: icon icon = statics_icon("app_icons", "clockify-white.png") def __init__(self, *args, **kwargs): super(SyncClockifyLocal, self).__init__(*args, **kwargs) - #: CLockifyApi + self.clockify_api = ClockifyAPI() def discover(self, session, entities, event): @@ -56,7 +51,7 @@ class SyncClockifyLocal(BaseAction): 'user': user, 'status': 'running', 'data': json.dumps({ - 'description': 'Sync Ftrack to Clockify' + 'description': 'Sync ftrack to Clockify' }) }) session.commit() diff --git a/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifyStart.py b/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifyStart.py index 8381c7d73e..d69d0371c0 100644 --- a/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifyStart.py +++ b/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifyStart.py @@ -1,7 +1,8 @@ import ayon_api +from ayon_clockify.clockify_api import ClockifyAPI + from ayon_core.pipeline import LauncherAction -from openpype_modules.clockify.clockify_api import ClockifyAPI class ClockifyStart(LauncherAction): diff --git a/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifySync.py b/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifySync.py index 5388f47c98..a32f2a8082 100644 --- a/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifySync.py +++ b/server_addon/clockify/client/ayon_clockify/launcher_actions/ClockifySync.py @@ -1,6 +1,6 @@ import ayon_api -from openpype_modules.clockify.clockify_api import ClockifyAPI +from ayon_clockify.clockify_api import ClockifyAPI from ayon_core.pipeline import LauncherAction diff --git a/server_addon/clockify/client/ayon_clockify/version.py b/server_addon/clockify/client/ayon_clockify/version.py new file mode 100644 index 0000000000..0e6e40cb7d --- /dev/null +++ b/server_addon/clockify/client/ayon_clockify/version.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +"""Package declaring AYON addon 'clockify' version.""" +__version__ = "0.2.0" diff --git a/server_addon/clockify/package.py b/server_addon/clockify/package.py index bcf9425b3f..1a36c43e69 100644 --- a/server_addon/clockify/package.py +++ b/server_addon/clockify/package.py @@ -1,3 +1,3 @@ name = "clockify" title = "Clockify" -version = "0.1.1" +version = "0.2.0" From 5f387f052dd16a6a186579dbcde6c53cbe84408c Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 21 May 2024 16:03:06 +0200 Subject: [PATCH 39/94] added clockify version requirement in ayon core --- client/ayon_core/addon/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py index 21b1193b07..431e9b651b 100644 --- a/client/ayon_core/addon/base.py +++ b/client/ayon_core/addon/base.py @@ -51,6 +51,7 @@ IGNORED_MODULES_IN_AYON = set() # - this is used to log the missing addon MOVED_ADDON_MILESTONE_VERSIONS = { "applications": VersionInfo(0, 2, 0), + "clockify": VersionInfo(0, 2, 0), } # Inherit from `object` for Python 2 hosts From 2ff82353753a7557f628c1cb439ff7dd1e3255c8 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Tue, 21 May 2024 16:03:16 +0200 Subject: [PATCH 40/94] add more information to package.py --- server_addon/clockify/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server_addon/clockify/package.py b/server_addon/clockify/package.py index 1a36c43e69..9482d7e0f7 100644 --- a/server_addon/clockify/package.py +++ b/server_addon/clockify/package.py @@ -1,3 +1,9 @@ name = "clockify" title = "Clockify" version = "0.2.0" +client_dir = "ayon_clockify" + +ayon_required_addons = { + "core": ">0.3.1", +} +ayon_compatible_addons = {} From caf3682e87bc3f4356f5ed8a9d54d0c040282588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabi=C3=A0=20Serra=20Arrizabalaga?= Date: Tue, 21 May 2024 22:22:33 +0200 Subject: [PATCH 41/94] Make sure actions in Launcher are sorted so they don't keep changing order randomly --- client/ayon_core/tools/launcher/models/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index 32df600c87..c27f0cd757 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -332,7 +332,7 @@ class ActionsModel: selection = self._prepare_selection(project_name, folder_id, task_id) output = [] action_items = self._get_action_items(project_name) - for identifier, action in self._get_action_objects().items(): + for identifier, action in sorted(self._get_action_objects().items()): if not action.is_compatible(selection): continue From 6c461eb21c981ebb70c19d40013f63fcefbd1a5f Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 09:54:27 +0200 Subject: [PATCH 42/94] add addon name to version.py --- server_addon/create_ayon_addons.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/server_addon/create_ayon_addons.py b/server_addon/create_ayon_addons.py index f0a36d4740..749077d2a8 100644 --- a/server_addon/create_ayon_addons.py +++ b/server_addon/create_ayon_addons.py @@ -47,7 +47,7 @@ plugin_for = ["ayon_server"] """ CLIENT_VERSION_CONTENT = '''# -*- coding: utf-8 -*- -"""Package declaring AYON core addon version.""" +"""Package declaring AYON addon '{}' version.""" __version__ = "{}" ''' @@ -183,6 +183,7 @@ def create_addon_zip( def prepare_client_code( + addon_name: str, addon_dir: Path, addon_output_dir: Path, addon_version: str @@ -211,7 +212,9 @@ def prepare_client_code( version_path = subpath / "version.py" if version_path.exists(): with open(version_path, "w") as stream: - stream.write(CLIENT_VERSION_CONTENT.format(addon_version)) + stream.write( + CLIENT_VERSION_CONTENT.format(addon_name, addon_version) + ) zip_filepath = private_dir / "client.zip" with ZipFileLongPaths(zip_filepath, "w", zipfile.ZIP_DEFLATED) as zipf: @@ -262,7 +265,9 @@ def create_addon_package( server_dir, addon_output_dir / "server", dirs_exist_ok=True ) - prepare_client_code(addon_dir, addon_output_dir, addon_version) + prepare_client_code( + package.name, addon_dir, addon_output_dir, addon_version + ) if create_zip: create_addon_zip( From dd29bd8fa8f88853fb8cf4ea4ec496ec8e2a41cf Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 22 May 2024 15:46:03 +0300 Subject: [PATCH 43/94] remove original render instance --- .../ayon_core/hosts/houdini/plugins/publish/extract_render.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py b/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py index 7b4762a25f..651df15c10 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py @@ -72,3 +72,6 @@ class ExtractRender(publish.Extractor): raise RuntimeError("Failed to complete render extraction. " "Missing output files: {}".format( missing_frames)) + + # Remove original render instance + instance.context.remove(instance) From 86595f282c1e7d01cfea1dcf81a6cd30244aa179 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 17:17:30 +0200 Subject: [PATCH 44/94] move tvpaint client code next to server codebase --- .../tvpaint/client/ayon_tvpaint}/__init__.py | 0 .../tvpaint/client/ayon_tvpaint}/addon.py | 0 .../tvpaint/client/ayon_tvpaint}/api/__init__.py | 0 .../ayon_tvpaint}/api/communication_server.py | 0 .../client/ayon_tvpaint}/api/launch_script.py | 0 .../tvpaint/client/ayon_tvpaint}/api/lib.py | 0 .../tvpaint/client/ayon_tvpaint}/api/pipeline.py | 0 .../tvpaint/client/ayon_tvpaint}/api/plugin.py | 0 .../client/ayon_tvpaint}/hooks/pre_launch_args.py | 0 .../tvpaint/client/ayon_tvpaint}/lib.py | 0 .../ayon_tvpaint}/plugins/create/convert_legacy.py | 0 .../ayon_tvpaint}/plugins/create/create_render.py | 0 .../ayon_tvpaint}/plugins/create/create_review.py | 0 .../ayon_tvpaint}/plugins/create/create_workfile.py | 0 .../client/ayon_tvpaint}/plugins/load/load_image.py | 0 .../plugins/load/load_reference_image.py | 0 .../client/ayon_tvpaint}/plugins/load/load_sound.py | 0 .../ayon_tvpaint}/plugins/load/load_workfile.py | 0 .../plugins/publish/collect_instance_frames.py | 0 .../plugins/publish/collect_render_instances.py | 0 .../plugins/publish/collect_workfile.py | 0 .../plugins/publish/collect_workfile_data.py | 0 .../plugins/publish/extract_convert_to_exr.py | 0 .../plugins/publish/extract_sequence.py | 0 .../plugins/publish/help/validate_asset_name.xml | 0 .../help/validate_duplicated_layer_names.xml | 0 .../publish/help/validate_layers_visibility.xml | 0 .../plugins/publish/help/validate_marks.xml | 0 .../publish/help/validate_missing_layer_names.xml | 0 .../publish/help/validate_render_layer_group.xml | 0 .../publish/help/validate_render_pass_group.xml | 0 .../publish/help/validate_scene_settings.xml | 0 .../plugins/publish/help/validate_start_frame.xml | 0 .../publish/help/validate_workfile_metadata.xml | 0 .../publish/help/validate_workfile_project_name.xml | 0 .../plugins/publish/increment_workfile_version.py | 0 .../plugins/publish/validate_asset_name.py | 0 .../publish/validate_duplicated_layer_names.py | 0 .../plugins/publish/validate_layers_visibility.py | 0 .../ayon_tvpaint}/plugins/publish/validate_marks.py | 0 .../plugins/publish/validate_missing_layer_names.py | 0 .../plugins/publish/validate_render_layer_group.py | 0 .../plugins/publish/validate_render_pass_group.py | 0 .../plugins/publish/validate_scene_settings.py | 0 .../plugins/publish/validate_start_frame.py | 0 .../plugins/publish/validate_workfile_metadata.py | 0 .../publish/validate_workfile_project_name.py | 0 .../client/ayon_tvpaint}/resources/template.tvpp | Bin .../client/ayon_tvpaint}/tvpaint_plugin/__init__.py | 0 .../tvpaint_plugin/plugin_code/CMakeLists.txt | 0 .../tvpaint_plugin/plugin_code/README.md | 0 .../tvpaint_plugin/plugin_code/library.cpp | 0 .../tvpaint_plugin/plugin_code/library.def | 0 .../windows_x64/plugin/OpenPypePlugin.dll | Bin .../windows_x86/plugin/OpenPypePlugin.dll | Bin .../tvpaint/client/ayon_tvpaint}/worker/__init__.py | 0 .../client/ayon_tvpaint}/worker/init_file.tvpp | Bin .../tvpaint/client/ayon_tvpaint}/worker/worker.py | 0 .../client/ayon_tvpaint}/worker/worker_job.py | 0 59 files changed, 0 insertions(+), 0 deletions(-) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/__init__.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/addon.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/api/__init__.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/api/communication_server.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/api/launch_script.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/api/lib.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/api/pipeline.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/api/plugin.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/hooks/pre_launch_args.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/lib.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/create/convert_legacy.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/create/create_render.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/create/create_review.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/create/create_workfile.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/load/load_image.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/load/load_reference_image.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/load/load_sound.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/load/load_workfile.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/collect_instance_frames.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/collect_render_instances.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/collect_workfile.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/collect_workfile_data.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/extract_convert_to_exr.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/extract_sequence.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_asset_name.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_duplicated_layer_names.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_layers_visibility.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_marks.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_missing_layer_names.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_render_layer_group.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_render_pass_group.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_scene_settings.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_start_frame.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_workfile_metadata.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/help/validate_workfile_project_name.xml (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/increment_workfile_version.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_asset_name.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_duplicated_layer_names.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_layers_visibility.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_marks.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_missing_layer_names.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_render_layer_group.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_render_pass_group.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_scene_settings.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_start_frame.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_workfile_metadata.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/plugins/publish/validate_workfile_project_name.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/resources/template.tvpp (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/tvpaint_plugin/__init__.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/tvpaint_plugin/plugin_code/CMakeLists.txt (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/tvpaint_plugin/plugin_code/README.md (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/tvpaint_plugin/plugin_code/library.cpp (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/tvpaint_plugin/plugin_code/library.def (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/tvpaint_plugin/plugin_files/windows_x64/plugin/OpenPypePlugin.dll (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/tvpaint_plugin/plugin_files/windows_x86/plugin/OpenPypePlugin.dll (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/worker/__init__.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/worker/init_file.tvpp (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/worker/worker.py (100%) rename {client/ayon_core/hosts/tvpaint => server_addon/tvpaint/client/ayon_tvpaint}/worker/worker_job.py (100%) diff --git a/client/ayon_core/hosts/tvpaint/__init__.py b/server_addon/tvpaint/client/ayon_tvpaint/__init__.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/__init__.py rename to server_addon/tvpaint/client/ayon_tvpaint/__init__.py diff --git a/client/ayon_core/hosts/tvpaint/addon.py b/server_addon/tvpaint/client/ayon_tvpaint/addon.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/addon.py rename to server_addon/tvpaint/client/ayon_tvpaint/addon.py diff --git a/client/ayon_core/hosts/tvpaint/api/__init__.py b/server_addon/tvpaint/client/ayon_tvpaint/api/__init__.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/api/__init__.py rename to server_addon/tvpaint/client/ayon_tvpaint/api/__init__.py diff --git a/client/ayon_core/hosts/tvpaint/api/communication_server.py b/server_addon/tvpaint/client/ayon_tvpaint/api/communication_server.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/api/communication_server.py rename to server_addon/tvpaint/client/ayon_tvpaint/api/communication_server.py diff --git a/client/ayon_core/hosts/tvpaint/api/launch_script.py b/server_addon/tvpaint/client/ayon_tvpaint/api/launch_script.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/api/launch_script.py rename to server_addon/tvpaint/client/ayon_tvpaint/api/launch_script.py diff --git a/client/ayon_core/hosts/tvpaint/api/lib.py b/server_addon/tvpaint/client/ayon_tvpaint/api/lib.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/api/lib.py rename to server_addon/tvpaint/client/ayon_tvpaint/api/lib.py diff --git a/client/ayon_core/hosts/tvpaint/api/pipeline.py b/server_addon/tvpaint/client/ayon_tvpaint/api/pipeline.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/api/pipeline.py rename to server_addon/tvpaint/client/ayon_tvpaint/api/pipeline.py diff --git a/client/ayon_core/hosts/tvpaint/api/plugin.py b/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/api/plugin.py rename to server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py diff --git a/client/ayon_core/hosts/tvpaint/hooks/pre_launch_args.py b/server_addon/tvpaint/client/ayon_tvpaint/hooks/pre_launch_args.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/hooks/pre_launch_args.py rename to server_addon/tvpaint/client/ayon_tvpaint/hooks/pre_launch_args.py diff --git a/client/ayon_core/hosts/tvpaint/lib.py b/server_addon/tvpaint/client/ayon_tvpaint/lib.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/lib.py rename to server_addon/tvpaint/client/ayon_tvpaint/lib.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/create/convert_legacy.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/convert_legacy.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/create/convert_legacy.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/create/convert_legacy.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/create/create_render.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_render.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/create/create_render.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_render.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/create/create_review.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_review.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/create/create_review.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_review.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/create/create_workfile.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_workfile.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/create/create_workfile.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_workfile.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/load/load_image.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/load/load_image.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/load/load_reference_image.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/load/load_reference_image.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/load/load_sound.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_sound.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/load/load_sound.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_sound.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/load/load_workfile.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_workfile.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/load/load_workfile.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_workfile.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/collect_instance_frames.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_instance_frames.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/collect_instance_frames.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_instance_frames.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/collect_render_instances.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_render_instances.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/collect_render_instances.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_render_instances.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/collect_workfile.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/collect_workfile.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/collect_workfile_data.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/collect_workfile_data.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/extract_convert_to_exr.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_convert_to_exr.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/extract_convert_to_exr.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_convert_to_exr.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/extract_sequence.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/extract_sequence.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_asset_name.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_asset_name.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_asset_name.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_asset_name.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_duplicated_layer_names.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_duplicated_layer_names.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_duplicated_layer_names.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_duplicated_layer_names.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_layers_visibility.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_layers_visibility.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_layers_visibility.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_layers_visibility.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_marks.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_marks.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_marks.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_marks.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_missing_layer_names.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_missing_layer_names.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_missing_layer_names.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_missing_layer_names.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_render_layer_group.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_render_layer_group.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_render_layer_group.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_render_layer_group.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_render_pass_group.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_render_pass_group.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_render_pass_group.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_render_pass_group.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_scene_settings.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_scene_settings.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_scene_settings.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_scene_settings.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_start_frame.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_start_frame.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_start_frame.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_start_frame.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_workfile_metadata.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_workfile_metadata.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_workfile_metadata.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_workfile_metadata.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_workfile_project_name.xml b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_workfile_project_name.xml similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/help/validate_workfile_project_name.xml rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/help/validate_workfile_project_name.xml diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/increment_workfile_version.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/increment_workfile_version.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/increment_workfile_version.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/increment_workfile_version.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_asset_name.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_asset_name.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_duplicated_layer_names.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_duplicated_layer_names.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_duplicated_layer_names.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_duplicated_layer_names.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_layers_visibility.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_layers_visibility.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_layers_visibility.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_layers_visibility.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_marks.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_marks.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_missing_layer_names.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_missing_layer_names.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_missing_layer_names.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_missing_layer_names.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_render_layer_group.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_layer_group.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_render_layer_group.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_layer_group.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_render_pass_group.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_pass_group.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_render_pass_group.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_pass_group.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_scene_settings.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_scene_settings.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_scene_settings.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_scene_settings.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_start_frame.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_start_frame.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_workfile_metadata.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_metadata.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_workfile_metadata.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_metadata.py diff --git a/client/ayon_core/hosts/tvpaint/plugins/publish/validate_workfile_project_name.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_project_name.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/plugins/publish/validate_workfile_project_name.py rename to server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_project_name.py diff --git a/client/ayon_core/hosts/tvpaint/resources/template.tvpp b/server_addon/tvpaint/client/ayon_tvpaint/resources/template.tvpp similarity index 100% rename from client/ayon_core/hosts/tvpaint/resources/template.tvpp rename to server_addon/tvpaint/client/ayon_tvpaint/resources/template.tvpp diff --git a/client/ayon_core/hosts/tvpaint/tvpaint_plugin/__init__.py b/server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/__init__.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/tvpaint_plugin/__init__.py rename to server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/__init__.py diff --git a/client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_code/CMakeLists.txt b/server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_code/CMakeLists.txt similarity index 100% rename from client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_code/CMakeLists.txt rename to server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_code/CMakeLists.txt diff --git a/client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_code/README.md b/server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_code/README.md similarity index 100% rename from client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_code/README.md rename to server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_code/README.md diff --git a/client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_code/library.cpp b/server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_code/library.cpp similarity index 100% rename from client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_code/library.cpp rename to server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_code/library.cpp diff --git a/client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_code/library.def b/server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_code/library.def similarity index 100% rename from client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_code/library.def rename to server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_code/library.def diff --git a/client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_files/windows_x64/plugin/OpenPypePlugin.dll b/server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_files/windows_x64/plugin/OpenPypePlugin.dll similarity index 100% rename from client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_files/windows_x64/plugin/OpenPypePlugin.dll rename to server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_files/windows_x64/plugin/OpenPypePlugin.dll diff --git a/client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_files/windows_x86/plugin/OpenPypePlugin.dll b/server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_files/windows_x86/plugin/OpenPypePlugin.dll similarity index 100% rename from client/ayon_core/hosts/tvpaint/tvpaint_plugin/plugin_files/windows_x86/plugin/OpenPypePlugin.dll rename to server_addon/tvpaint/client/ayon_tvpaint/tvpaint_plugin/plugin_files/windows_x86/plugin/OpenPypePlugin.dll diff --git a/client/ayon_core/hosts/tvpaint/worker/__init__.py b/server_addon/tvpaint/client/ayon_tvpaint/worker/__init__.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/worker/__init__.py rename to server_addon/tvpaint/client/ayon_tvpaint/worker/__init__.py diff --git a/client/ayon_core/hosts/tvpaint/worker/init_file.tvpp b/server_addon/tvpaint/client/ayon_tvpaint/worker/init_file.tvpp similarity index 100% rename from client/ayon_core/hosts/tvpaint/worker/init_file.tvpp rename to server_addon/tvpaint/client/ayon_tvpaint/worker/init_file.tvpp diff --git a/client/ayon_core/hosts/tvpaint/worker/worker.py b/server_addon/tvpaint/client/ayon_tvpaint/worker/worker.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/worker/worker.py rename to server_addon/tvpaint/client/ayon_tvpaint/worker/worker.py diff --git a/client/ayon_core/hosts/tvpaint/worker/worker_job.py b/server_addon/tvpaint/client/ayon_tvpaint/worker/worker_job.py similarity index 100% rename from client/ayon_core/hosts/tvpaint/worker/worker_job.py rename to server_addon/tvpaint/client/ayon_tvpaint/worker/worker_job.py From 60a76239bf254406eb19eef3096e3b94a40d0060 Mon Sep 17 00:00:00 2001 From: Mustafa Taher Date: Wed, 22 May 2024 18:32:28 +0300 Subject: [PATCH 45/94] disable integration for the original render instance Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../ayon_core/hosts/houdini/plugins/publish/extract_render.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py b/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py index 651df15c10..20e9341ebd 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py @@ -74,4 +74,4 @@ class ExtractRender(publish.Extractor): missing_frames)) # Remove original render instance - instance.context.remove(instance) + instance.data["integrate"] = False From ab8d5186b9f9c9a9fc885272dc398b579aa8225e Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 22 May 2024 18:42:19 +0300 Subject: [PATCH 46/94] update comment about skipping integration --- .../ayon_core/hosts/houdini/plugins/publish/extract_render.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py b/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py index 20e9341ebd..267280ad9f 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py @@ -73,5 +73,5 @@ class ExtractRender(publish.Extractor): "Missing output files: {}".format( missing_frames)) - # Remove original render instance + # Skip integrating original render instance instance.data["integrate"] = False From 48167e23c79baf4510d514426139f07f9ec86a9b Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 17:43:31 +0200 Subject: [PATCH 47/94] Implement sorting proxy model --- .../tools/launcher/ui/actions_widget.py | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/tools/launcher/ui/actions_widget.py b/client/ayon_core/tools/launcher/ui/actions_widget.py index a225827418..3e4dfaf6e4 100644 --- a/client/ayon_core/tools/launcher/ui/actions_widget.py +++ b/client/ayon_core/tools/launcher/ui/actions_widget.py @@ -290,6 +290,34 @@ class ActionDelegate(QtWidgets.QStyledItemDelegate): painter.drawPixmap(extender_x, extender_y, pix) +class ActionsProxyModel(QtCore.QSortFilterProxyModel): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) + + def lessThan(self, left, right): + # Sort by action order and then by label + left_value = left.data(ACTION_SORT_ROLE) + right_value = right.data(ACTION_SORT_ROLE) + + # Values are same -> use super sorting + if left_value == right_value: + # Default behavior is using DisplayRole + return super().lessThan(left, right) + + # Validate 'None' values + if right_value is None: + return True + if left_value is None: + return False + # Sort values and handle incompatible types + try: + return left_value < right_value + except TypeError: + return True + + class ActionsWidget(QtWidgets.QWidget): def __init__(self, controller, parent): super(ActionsWidget, self).__init__(parent) @@ -316,10 +344,7 @@ class ActionsWidget(QtWidgets.QWidget): model = ActionsQtModel(controller) - proxy_model = QtCore.QSortFilterProxyModel() - proxy_model.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) - proxy_model.setSortRole(ACTION_SORT_ROLE) - + proxy_model = ActionsProxyModel() proxy_model.setSourceModel(model) view.setModel(proxy_model) From 88cae86ee67a0cedd2e0635dd1fe1f6a2a45f4d9 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 17:43:42 +0200 Subject: [PATCH 48/94] reverse sorting in actions model --- client/ayon_core/tools/launcher/models/actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/tools/launcher/models/actions.py b/client/ayon_core/tools/launcher/models/actions.py index c27f0cd757..32df600c87 100644 --- a/client/ayon_core/tools/launcher/models/actions.py +++ b/client/ayon_core/tools/launcher/models/actions.py @@ -332,7 +332,7 @@ class ActionsModel: selection = self._prepare_selection(project_name, folder_id, task_id) output = [] action_items = self._get_action_items(project_name) - for identifier, action in sorted(self._get_action_objects().items()): + for identifier, action in self._get_action_objects().items(): if not action.is_compatible(selection): continue From 7f586576415493f0c49bdb497fb70c9921b038ed Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Wed, 22 May 2024 18:46:39 +0300 Subject: [PATCH 49/94] move code to a dedicated place --- .../plugins/publish/collect_local_render_instances.py | 6 +++--- .../hosts/houdini/plugins/publish/extract_render.py | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/client/ayon_core/hosts/houdini/plugins/publish/collect_local_render_instances.py b/client/ayon_core/hosts/houdini/plugins/publish/collect_local_render_instances.py index 5a446fa0d3..474002e1ee 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/collect_local_render_instances.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/collect_local_render_instances.py @@ -132,6 +132,6 @@ class CollectLocalRenderInstances(pyblish.api.InstancePlugin): ] }) - # Remove original render instance - # I can't remove it here as I still need it to trigger the render. - # context.remove(instance) + # Skip integrating original render instance. + # We are not removing it because it's used to trigger the render. + instance.data["integrate"] = False diff --git a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py b/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py index 267280ad9f..7b4762a25f 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/extract_render.py @@ -72,6 +72,3 @@ class ExtractRender(publish.Extractor): raise RuntimeError("Failed to complete render extraction. " "Missing output files: {}".format( missing_frames)) - - # Skip integrating original render instance - instance.data["integrate"] = False From 299b9d14733f34a0a77f6ff6ffe2419ac4cd5ef9 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 17:52:56 +0200 Subject: [PATCH 50/94] fix imports --- .../tvpaint/client/ayon_tvpaint/api/communication_server.py | 2 +- .../tvpaint/client/ayon_tvpaint/api/launch_script.py | 2 +- server_addon/tvpaint/client/ayon_tvpaint/api/pipeline.py | 3 ++- .../tvpaint/client/ayon_tvpaint/hooks/pre_launch_args.py | 2 +- .../client/ayon_tvpaint/plugins/create/convert_legacy.py | 4 ++-- .../client/ayon_tvpaint/plugins/create/create_render.py | 4 ++-- .../client/ayon_tvpaint/plugins/create/create_review.py | 2 +- .../client/ayon_tvpaint/plugins/create/create_workfile.py | 2 +- .../tvpaint/client/ayon_tvpaint/plugins/load/load_image.py | 4 ++-- .../ayon_tvpaint/plugins/load/load_reference_image.py | 6 +++--- .../tvpaint/client/ayon_tvpaint/plugins/load/load_sound.py | 4 ++-- .../client/ayon_tvpaint/plugins/load/load_workfile.py | 6 +++--- .../ayon_tvpaint/plugins/publish/collect_workfile_data.py | 4 ++-- .../client/ayon_tvpaint/plugins/publish/extract_sequence.py | 4 ++-- .../ayon_tvpaint/plugins/publish/validate_asset_name.py | 2 +- .../client/ayon_tvpaint/plugins/publish/validate_marks.py | 2 +- .../ayon_tvpaint/plugins/publish/validate_start_frame.py | 2 +- server_addon/tvpaint/client/ayon_tvpaint/worker/worker.py | 4 ++-- .../tvpaint/client/ayon_tvpaint/worker/worker_job.py | 2 +- 19 files changed, 31 insertions(+), 30 deletions(-) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/api/communication_server.py b/server_addon/tvpaint/client/ayon_tvpaint/api/communication_server.py index d185bdf685..7ccb49f07e 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/api/communication_server.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/api/communication_server.py @@ -22,7 +22,7 @@ from aiohttp_json_rpc.protocol import ( from aiohttp_json_rpc.exceptions import RpcError from ayon_core.lib import emit_event -from ayon_core.hosts.tvpaint.tvpaint_plugin import get_plugin_files_path +from ayon_tvpaint.tvpaint_plugin import get_plugin_files_path log = logging.getLogger(__name__) log.setLevel(logging.DEBUG) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/api/launch_script.py b/server_addon/tvpaint/client/ayon_tvpaint/api/launch_script.py index bcc92d8b6d..1e23e95572 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/api/launch_script.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/api/launch_script.py @@ -10,7 +10,7 @@ from qtpy import QtWidgets, QtCore, QtGui from ayon_core import style from ayon_core.pipeline import install_host -from ayon_core.hosts.tvpaint.api import ( +from ayon_tvpaint.api import ( TVPaintHost, CommunicationWrapper, ) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/api/pipeline.py b/server_addon/tvpaint/client/ayon_tvpaint/api/pipeline.py index 6f5c4d49d4..5ec6355138 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/api/pipeline.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/api/pipeline.py @@ -7,8 +7,9 @@ import requests import ayon_api import pyblish.api +from ayon_tvpaint import TVPAINT_ROOT_DIR + from ayon_core.host import HostBase, IWorkfileHost, ILoadHost, IPublishHost -from ayon_core.hosts.tvpaint import TVPAINT_ROOT_DIR from ayon_core.settings import get_current_project_settings from ayon_core.lib import register_event_callback from ayon_core.pipeline import ( diff --git a/server_addon/tvpaint/client/ayon_tvpaint/hooks/pre_launch_args.py b/server_addon/tvpaint/client/ayon_tvpaint/hooks/pre_launch_args.py index 691b81e089..8ee91aa0e7 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/hooks/pre_launch_args.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/hooks/pre_launch_args.py @@ -37,6 +37,6 @@ class TvpaintPrelaunchHook(PreLaunchHook): self.launch_context.launch_args.extend(remainders) def launch_script_path(self): - from ayon_core.hosts.tvpaint import get_launch_script_path + from ayon_tvpaint import get_launch_script_path return get_launch_script_path() diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/convert_legacy.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/convert_legacy.py index 34fe0ce8f4..e79a6565e8 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/convert_legacy.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/convert_legacy.py @@ -4,8 +4,8 @@ from ayon_core.pipeline.create.creator_plugins import ( ProductConvertorPlugin, cache_and_get_instances, ) -from ayon_core.hosts.tvpaint.api.plugin import SHARED_DATA_KEY -from ayon_core.hosts.tvpaint.api.lib import get_groups_data +from ayon_tvpaint.api.plugin import SHARED_DATA_KEY +from ayon_tvpaint.api.lib import get_groups_data class TVPaintLegacyConverted(ProductConvertorPlugin): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_render.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_render.py index dc9c2466e0..2286a4417a 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_render.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_render.py @@ -52,11 +52,11 @@ from ayon_core.pipeline.create import ( CreatedInstance, CreatorError, ) -from ayon_core.hosts.tvpaint.api.plugin import ( +from ayon_tvpaint.api.plugin import ( TVPaintCreator, TVPaintAutoCreator, ) -from ayon_core.hosts.tvpaint.api.lib import ( +from ayon_tvpaint.api.lib import ( get_layers_data, get_groups_data, execute_george_through_file, diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_review.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_review.py index acb4f0f8d6..6068ffa1d8 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_review.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_review.py @@ -1,7 +1,7 @@ import ayon_api from ayon_core.pipeline import CreatedInstance -from ayon_core.hosts.tvpaint.api.plugin import TVPaintAutoCreator +from ayon_tvpaint.api.plugin import TVPaintAutoCreator class TVPaintReviewCreator(TVPaintAutoCreator): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_workfile.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_workfile.py index f21f41439e..b08f731869 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_workfile.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/create/create_workfile.py @@ -1,7 +1,7 @@ import ayon_api from ayon_core.pipeline import CreatedInstance -from ayon_core.hosts.tvpaint.api.plugin import TVPaintAutoCreator +from ayon_tvpaint.api.plugin import TVPaintAutoCreator class TVPaintWorkfileCreator(TVPaintAutoCreator): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py index aad8f92d26..de61992d3f 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_image.py @@ -1,6 +1,6 @@ from ayon_core.lib.attribute_definitions import BoolDef -from ayon_core.hosts.tvpaint.api import plugin -from ayon_core.hosts.tvpaint.api.lib import execute_george_through_file +from ayon_tvpaint.api import plugin +from ayon_tvpaint.api.lib import execute_george_through_file class ImportImage(plugin.Loader): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py index a7fcb9f4a4..ce08aa9cd9 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_reference_image.py @@ -2,12 +2,12 @@ import collections from ayon_core.lib.attribute_definitions import BoolDef from ayon_core.pipeline import registered_host -from ayon_core.hosts.tvpaint.api import plugin -from ayon_core.hosts.tvpaint.api.lib import ( +from ayon_tvpaint.api import plugin +from ayon_tvpaint.api.lib import ( get_layers_data, execute_george_through_file, ) -from ayon_core.hosts.tvpaint.api.pipeline import ( +from ayon_tvpaint.api.pipeline import ( write_workfile_metadata, SECTION_NAME_CONTAINERS, containerise, diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_sound.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_sound.py index 7e8c8022d6..086afba079 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_sound.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_sound.py @@ -1,7 +1,7 @@ import os import tempfile -from ayon_core.hosts.tvpaint.api import plugin -from ayon_core.hosts.tvpaint.api.lib import ( +from ayon_tvpaint.api import plugin +from ayon_tvpaint.api.lib import ( execute_george_through_file, ) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_workfile.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_workfile.py index 07c2d91533..045e22f188 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_workfile.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/load/load_workfile.py @@ -10,11 +10,11 @@ from ayon_core.pipeline.workfile import ( get_last_workfile_with_version, ) from ayon_core.pipeline.template_data import get_template_data_with_names -from ayon_core.hosts.tvpaint.api import plugin -from ayon_core.hosts.tvpaint.api.lib import ( +from ayon_tvpaint.api import plugin +from ayon_tvpaint.api.lib import ( execute_george_through_file, ) -from ayon_core.hosts.tvpaint.api.pipeline import ( +from ayon_tvpaint.api.pipeline import ( get_current_workfile_context, ) from ayon_core.pipeline.version_start import get_versioning_start diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py index 3155773bda..8f32b57e67 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py @@ -4,13 +4,13 @@ import tempfile import pyblish.api -from ayon_core.hosts.tvpaint.api.lib import ( +from ayon_tvpaint.api.lib import ( execute_george, execute_george_through_file, get_layers_data, get_groups_data, ) -from ayon_core.hosts.tvpaint.api.pipeline import ( +from ayon_tvpaint.api.pipeline import ( SECTION_NAME_CONTEXT, SECTION_NAME_INSTANCES, SECTION_NAME_CONTAINERS, diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py index fe5e148b7b..dc06726295 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py @@ -10,13 +10,13 @@ from ayon_core.pipeline.publish import ( KnownPublishError, get_publish_instance_families, ) -from ayon_core.hosts.tvpaint.api.lib import ( +from ayon_tvpaint.api.lib import ( execute_george, execute_george_through_file, get_layers_pre_post_behavior, get_layers_exposure_frames, ) -from ayon_core.hosts.tvpaint.lib import ( +from ayon_tvpaint.lib import ( calculate_layers_extraction_data, get_frame_filename_template, fill_reference_frames, diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py index 764c090720..55b06aa489 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py @@ -3,7 +3,7 @@ from ayon_core.pipeline import ( PublishXmlValidationError, OptionalPyblishPluginMixin, ) -from ayon_core.hosts.tvpaint.api.pipeline import ( +from ayon_tvpaint.api.pipeline import ( list_instances, write_instances, ) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py index 6bfbe840bb..f4e7eae2e1 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py @@ -5,7 +5,7 @@ from ayon_core.pipeline import ( PublishXmlValidationError, OptionalPyblishPluginMixin, ) -from ayon_core.hosts.tvpaint.api.lib import execute_george +from ayon_tvpaint.api.lib import execute_george class ValidateMarksRepair(pyblish.api.Action): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py index fea64bd6a8..f8f4fbb3c9 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py @@ -3,7 +3,7 @@ from ayon_core.pipeline import ( PublishXmlValidationError, OptionalPyblishPluginMixin, ) -from ayon_core.hosts.tvpaint.api.lib import execute_george +from ayon_tvpaint.api.lib import execute_george class RepairStartFrame(pyblish.api.Action): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/worker/worker.py b/server_addon/tvpaint/client/ayon_tvpaint/worker/worker.py index 3d9b1ef2b8..aa79fd442c 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/worker/worker.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/worker/worker.py @@ -5,11 +5,11 @@ import tempfile import shutil import asyncio -from ayon_core.hosts.tvpaint.api.communication_server import ( +from ayon_tvpaint.api.communication_server import ( BaseCommunicator, CommunicationWrapper ) -from openpype_modules.job_queue.job_workers import WorkerJobsConnection +from ayon_core.modules.job_queue.job_workers import WorkerJobsConnection from .worker_job import ProcessTVPaintCommands diff --git a/server_addon/tvpaint/client/ayon_tvpaint/worker/worker_job.py b/server_addon/tvpaint/client/ayon_tvpaint/worker/worker_job.py index f111ed369a..db91010c47 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/worker/worker_job.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/worker/worker_job.py @@ -256,7 +256,7 @@ class CollectSceneData(BaseCommand): name = "collect_scene_data" def execute(self): - from ayon_core.hosts.tvpaint.api.lib import ( + from ayon_tvpaint.api.lib import ( get_layers_data, get_groups_data, get_layers_pre_post_behavior, From ff55f08ad55bbaf4db41d6de18c51736a95c31b9 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 17:53:08 +0200 Subject: [PATCH 51/94] use ayon naming over openpype --- server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py b/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py index e715b959f4..ed3c38d564 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py @@ -12,7 +12,7 @@ from ayon_core.pipeline.create.creator_plugins import cache_and_get_instances from .lib import get_layers_data -SHARED_DATA_KEY = "openpype.tvpaint.instances" +SHARED_DATA_KEY = "ayon.tvpaint.instances" class TVPaintCreatorCommon: From 9a5421674a2e41dba8f1ac3679229062ec6eacf7 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 17:59:35 +0200 Subject: [PATCH 52/94] change version and add more information about addon --- server_addon/tvpaint/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server_addon/tvpaint/package.py b/server_addon/tvpaint/package.py index 2be3164f4a..c9e482efe7 100644 --- a/server_addon/tvpaint/package.py +++ b/server_addon/tvpaint/package.py @@ -1,3 +1,10 @@ name = "tvpaint" title = "TVPaint" -version = "0.1.2" +version = "0.2.0" +app_host_name = "tvpaint" +client_dir = "ayon_tvpaint" + +ayon_required_addons = { + "core": ">0.3.1", +} +ayon_compatible_addons = {} From f629148ae94eff0dad6fc2074842b72e7ab1fa5b Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 18:00:17 +0200 Subject: [PATCH 53/94] add milestone version --- client/ayon_core/addon/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py index 21b1193b07..d9bd5b6af3 100644 --- a/client/ayon_core/addon/base.py +++ b/client/ayon_core/addon/base.py @@ -51,6 +51,7 @@ IGNORED_MODULES_IN_AYON = set() # - this is used to log the missing addon MOVED_ADDON_MILESTONE_VERSIONS = { "applications": VersionInfo(0, 2, 0), + "tvpaint": VersionInfo(0, 2, 0), } # Inherit from `object` for Python 2 hosts From 0f033d394a58b909d9a315bc99eff871968cfa2c Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 18:08:09 +0200 Subject: [PATCH 54/94] define 'settings_category' on plugins --- server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py | 5 +++++ .../ayon_tvpaint/plugins/publish/collect_instance_frames.py | 2 ++ .../ayon_tvpaint/plugins/publish/collect_render_instances.py | 1 + .../client/ayon_tvpaint/plugins/publish/collect_workfile.py | 2 ++ .../ayon_tvpaint/plugins/publish/collect_workfile_data.py | 2 ++ .../ayon_tvpaint/plugins/publish/extract_convert_to_exr.py | 2 ++ .../client/ayon_tvpaint/plugins/publish/extract_sequence.py | 2 ++ .../plugins/publish/increment_workfile_version.py | 2 ++ .../ayon_tvpaint/plugins/publish/validate_asset_name.py | 2 ++ .../plugins/publish/validate_duplicated_layer_names.py | 2 ++ .../plugins/publish/validate_layers_visibility.py | 2 ++ .../client/ayon_tvpaint/plugins/publish/validate_marks.py | 2 ++ .../plugins/publish/validate_missing_layer_names.py | 2 ++ .../plugins/publish/validate_render_layer_group.py | 2 ++ .../plugins/publish/validate_render_pass_group.py | 2 ++ .../ayon_tvpaint/plugins/publish/validate_scene_settings.py | 2 ++ .../ayon_tvpaint/plugins/publish/validate_start_frame.py | 2 ++ .../plugins/publish/validate_workfile_metadata.py | 2 ++ .../plugins/publish/validate_workfile_project_name.py | 2 ++ 19 files changed, 40 insertions(+) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py b/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py index ed3c38d564..9dd6ae530a 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/api/plugin.py @@ -89,6 +89,8 @@ class TVPaintCreatorCommon: class TVPaintCreator(Creator, TVPaintCreatorCommon): + settings_category = "tvpaint" + def collect_instances(self): self._collect_create_instances() @@ -140,6 +142,8 @@ class TVPaintCreator(Creator, TVPaintCreatorCommon): class TVPaintAutoCreator(AutoCreator, TVPaintCreatorCommon): + settings_category = "tvpaint" + def collect_instances(self): self._collect_create_instances() @@ -152,6 +156,7 @@ class TVPaintAutoCreator(AutoCreator, TVPaintCreatorCommon): class Loader(LoaderPlugin): hosts = ["tvpaint"] + settings_category = "tvpaint" @staticmethod def get_members_from_container(container): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_instance_frames.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_instance_frames.py index 5f134a0cd0..a9e69166d7 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_instance_frames.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_instance_frames.py @@ -14,6 +14,8 @@ class CollectOutputFrameRange(pyblish.api.InstancePlugin): hosts = ["tvpaint"] families = ["review", "render"] + settings_category = "tvpaint" + def process(self, instance): folder_entity = instance.data.get("folderEntity") if not folder_entity: diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_render_instances.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_render_instances.py index 596d257f22..00af624700 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_render_instances.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_render_instances.py @@ -9,6 +9,7 @@ class CollectRenderInstances(pyblish.api.InstancePlugin): hosts = ["tvpaint"] families = ["render", "review"] + settings_category = "tvpaint" ignore_render_pass_transparency = False def process(self, instance): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile.py index a9e9db3872..27de086a46 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile.py @@ -9,6 +9,8 @@ class CollectWorkfile(pyblish.api.InstancePlugin): hosts = ["tvpaint"] families = ["workfile"] + settings_category = "tvpaint" + def process(self, instance): context = instance.context current_file = context.data["currentFile"] diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py index 8f32b57e67..a34a718ff5 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/collect_workfile_data.py @@ -58,6 +58,8 @@ class CollectWorkfileData(pyblish.api.ContextPlugin): hosts = ["tvpaint"] actions = [ResetTVPaintWorkfileMetadata] + settings_category = "tvpaint" + def process(self, context): current_project_id = execute_george("tv_projectcurrentid") execute_george("tv_projectselect {}".format(current_project_id)) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_convert_to_exr.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_convert_to_exr.py index d1bc68ef35..020ebc1a89 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_convert_to_exr.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_convert_to_exr.py @@ -23,6 +23,8 @@ class ExtractConvertToEXR(pyblish.api.InstancePlugin): hosts = ["tvpaint"] families = ["render"] + settings_category = "tvpaint" + enabled = False # Replace source PNG files or just add diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py index dc06726295..86c20c6528 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/extract_sequence.py @@ -31,6 +31,8 @@ class ExtractSequence(pyblish.api.InstancePlugin): hosts = ["tvpaint"] families = ["review", "render"] + settings_category = "tvpaint" + # Modifiable with settings review_bg = [255, 255, 255, 1.0] diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/increment_workfile_version.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/increment_workfile_version.py index 5dd6110bc7..601d276b97 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/increment_workfile_version.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/increment_workfile_version.py @@ -12,6 +12,8 @@ class IncrementWorkfileVersion(pyblish.api.ContextPlugin): optional = True hosts = ["tvpaint"] + settings_category = "tvpaint" + def process(self, context): assert all(result["success"] for result in context.data["results"]), ( diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py index 55b06aa489..8763c005dc 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_asset_name.py @@ -48,6 +48,8 @@ class ValidateAssetName( hosts = ["tvpaint"] actions = [FixFolderPaths] + settings_category = "tvpaint" + def process(self, context): if not self.is_active(context.data): return diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_duplicated_layer_names.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_duplicated_layer_names.py index aab0557bdd..be4dc0f123 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_duplicated_layer_names.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_duplicated_layer_names.py @@ -9,6 +9,8 @@ class ValidateLayersGroup(pyblish.api.InstancePlugin): order = pyblish.api.ValidatorOrder families = ["renderPass"] + settings_category = "tvpaint" + def process(self, instance): # Prepare layers layers_by_name = instance.context.data["layersByName"] diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_layers_visibility.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_layers_visibility.py index 1bcdf7baa1..f58b8a6973 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_layers_visibility.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_layers_visibility.py @@ -10,6 +10,8 @@ class ValidateLayersVisiblity(pyblish.api.InstancePlugin): order = pyblish.api.ValidatorOrder families = ["review", "render"] + settings_category = "tvpaint" + def process(self, instance): layers = instance.data.get("layers") # Instance have empty layers diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py index f4e7eae2e1..0911beb4e8 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_marks.py @@ -41,6 +41,8 @@ class ValidateMarks( optional = True actions = [ValidateMarksRepair] + settings_category = "tvpaint" + @staticmethod def get_expected_data(context): scene_mark_in = context.data["sceneMarkIn"] diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_missing_layer_names.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_missing_layer_names.py index 3fc80f6e78..f340d3c10d 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_missing_layer_names.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_missing_layer_names.py @@ -9,6 +9,8 @@ class ValidateMissingLayers(pyblish.api.InstancePlugin): order = pyblish.api.ValidatorOrder families = ["renderPass"] + settings_category = "tvpaint" + def process(self, instance): # Prepare layers layers_by_name = instance.context.data["layersByName"] diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_layer_group.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_layer_group.py index 0e97a01de2..b20ea3cac6 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_layer_group.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_layer_group.py @@ -12,6 +12,8 @@ class ValidateRenderLayerGroups(pyblish.api.ContextPlugin): label = "Validate Render Layers Group" order = pyblish.api.ValidatorOrder + 0.1 + settings_category = "tvpaint" + def process(self, context): # Prepare layers render_layers_by_group_id = collections.defaultdict(list) diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_pass_group.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_pass_group.py index 874af38dd4..3d00fd031f 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_pass_group.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_render_pass_group.py @@ -13,6 +13,8 @@ class ValidateLayersGroup(pyblish.api.InstancePlugin): order = pyblish.api.ValidatorOrder + 0.1 families = ["renderPass"] + settings_category = "tvpaint" + def process(self, instance): # Prepare layers layers_data = instance.context.data["layersData"] diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_scene_settings.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_scene_settings.py index 5e42b5ab2f..8bad5c43c8 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_scene_settings.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_scene_settings.py @@ -16,6 +16,8 @@ class ValidateProjectSettings( label = "Validate Scene Settings" order = pyblish.api.ValidatorOrder + + settings_category = "tvpaint" optional = True def process(self, context): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py index f8f4fbb3c9..9669acf1b5 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_start_frame.py @@ -27,6 +27,8 @@ class ValidateStartFrame( order = pyblish.api.ValidatorOrder hosts = ["tvpaint"] actions = [RepairStartFrame] + + settings_category = "tvpaint" optional = True def process(self, context): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_metadata.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_metadata.py index 1d9954d051..34c02c78ed 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_metadata.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_metadata.py @@ -31,6 +31,8 @@ class ValidateWorkfileMetadata(pyblish.api.ContextPlugin): actions = [ValidateWorkfileMetadataRepair] + settings_category = "tvpaint" + required_keys = {"project_name", "folder_path", "task_name"} def process(self, context): diff --git a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_project_name.py b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_project_name.py index 5b42842717..868c7d44fc 100644 --- a/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_project_name.py +++ b/server_addon/tvpaint/client/ayon_tvpaint/plugins/publish/validate_workfile_project_name.py @@ -12,6 +12,8 @@ class ValidateWorkfileProjectName(pyblish.api.ContextPlugin): label = "Validate Workfile Project Name" order = pyblish.api.ValidatorOrder + settings_category = "tvpaint" + def process(self, context): workfile_context = context.data.get("workfile_context") # If workfile context is missing than project is matching to From 3dc40e4ba406cafddb3751d4be4fd60657d1a081 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 22 May 2024 18:14:19 +0200 Subject: [PATCH 55/94] remove 'app_host_name' as it's supported since server 1.1.1 --- server_addon/tvpaint/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/server_addon/tvpaint/package.py b/server_addon/tvpaint/package.py index c9e482efe7..073d04c07e 100644 --- a/server_addon/tvpaint/package.py +++ b/server_addon/tvpaint/package.py @@ -1,7 +1,6 @@ name = "tvpaint" title = "TVPaint" version = "0.2.0" -app_host_name = "tvpaint" client_dir = "ayon_tvpaint" ayon_required_addons = { From 4bef6c9911ff47edf88dfa1b45fbb36c945e90e6 Mon Sep 17 00:00:00 2001 From: Mustafa Taher Date: Thu, 23 May 2024 12:34:54 +0300 Subject: [PATCH 56/94] refactor an if condition Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../plugins/publish/validate_export_is_a_single_frame.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py b/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py index 6775699adf..b188055bc7 100644 --- a/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py +++ b/client/ayon_core/hosts/houdini/plugins/publish/validate_export_is_a_single_frame.py @@ -42,7 +42,7 @@ class ValidateSingleFrame(pyblish.api.InstancePlugin, frame_end = instance.data.get("frameEndHandle") # This happens if instance node has no 'trange' parameter. - if (frame_start or frame_end) is None: + if frame_start is None or frame_end is None: cls.log.debug( "No frame data, skipping check.." ) From c86c3770b54f03b898188ed74c780db18a75d517 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 14:39:47 +0200 Subject: [PATCH 57/94] bump version to '0.3.2' --- client/ayon_core/version.py | 2 +- package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index 275e1b1dd6..655595d9f4 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON core addon version.""" -__version__ = "0.3.2-dev.1" +__version__ = "0.3.2" diff --git a/package.py b/package.py index b7b8d2dae6..cf9d7b2035 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "0.3.2-dev.1" +version = "0.3.2" client_dir = "ayon_core" From 5be9f4e253f9765e635a3c98444712bfdf5365e9 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 14:40:20 +0200 Subject: [PATCH 58/94] bump version to '0.3.3-dev.1' --- client/ayon_core/version.py | 2 +- package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/version.py b/client/ayon_core/version.py index 655595d9f4..e4297e2000 100644 --- a/client/ayon_core/version.py +++ b/client/ayon_core/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON core addon version.""" -__version__ = "0.3.2" +__version__ = "0.3.3-dev.1" diff --git a/package.py b/package.py index cf9d7b2035..73f7174b6f 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "core" title = "Core" -version = "0.3.2" +version = "0.3.3-dev.1" client_dir = "ayon_core" From a25bda81a1a29f3987a88181ff11ea93bb64d360 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 15:01:47 +0200 Subject: [PATCH 59/94] fix version requirements --- server_addon/clockify/package.py | 2 +- server_addon/tvpaint/package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server_addon/clockify/package.py b/server_addon/clockify/package.py index 9482d7e0f7..61e0685191 100644 --- a/server_addon/clockify/package.py +++ b/server_addon/clockify/package.py @@ -4,6 +4,6 @@ version = "0.2.0" client_dir = "ayon_clockify" ayon_required_addons = { - "core": ">0.3.1", + "core": ">0.3.2", } ayon_compatible_addons = {} diff --git a/server_addon/tvpaint/package.py b/server_addon/tvpaint/package.py index 073d04c07e..3ab35f727e 100644 --- a/server_addon/tvpaint/package.py +++ b/server_addon/tvpaint/package.py @@ -4,6 +4,6 @@ version = "0.2.0" client_dir = "ayon_tvpaint" ayon_required_addons = { - "core": ">0.3.1", + "core": ">0.3.2", } ayon_compatible_addons = {} From a75cb56dc5f31e16184322becd01bc56aa00c7d8 Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Thu, 23 May 2024 16:16:07 +0100 Subject: [PATCH 60/94] Update client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../hosts/nuke/plugins/publish/collect_headless_farm.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index 5a3d3cc0de..e59c296904 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -44,4 +44,5 @@ class SetupHeadlessFarm(pyblish.api.InstancePlugin): instance.data["families"] = ["headless_farm"] # Use the workfile instead of published. - instance.data["use_published_workfile"] = False + attribute_values = instance.data.setdefault("attributeValues", {}) + attribute_values["use_published_workfile"] = False From 459e9a51c04542da277d80c110c86a06a63bae8e Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Thu, 23 May 2024 16:17:33 +0100 Subject: [PATCH 61/94] Update client/ayon_core/hosts/nuke/api/lib.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_core/hosts/nuke/api/lib.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/lib.py b/client/ayon_core/hosts/nuke/api/lib.py index 9acd8ecfa9..f1a9418111 100644 --- a/client/ayon_core/hosts/nuke/api/lib.py +++ b/client/ayon_core/hosts/nuke/api/lib.py @@ -1027,8 +1027,10 @@ def script_name(): def add_button_headless_farm_submission(node): name = "headlessFarmSubmission" label = "Headless Farm Submission" - value = "from ayon_core.hosts.nuke.api.utils import submit_headless_farm;" - value += "submit_headless_farm(nuke.thisNode())" + value = ( + "from ayon_core.hosts.nuke.api.utils import submit_headless_farm;" + "submit_headless_farm(nuke.thisNode())" + ) knob = nuke.PyScript_Knob(name, label, value) knob.clearFlag(nuke.STARTLINE) node.addKnob(knob) From 3debb92c02f7ed539983f734821bfdda7512e385 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 23 May 2024 17:15:52 +0100 Subject: [PATCH 62/94] Use publish_attributes --- .../nuke/plugins/publish/collect_headless_farm.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index e59c296904..7db2ed117c 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -1,5 +1,9 @@ import pyblish.api +from ayon_core.pipeline.publish import ( + AYONPyblishPluginMixin +) + class CollectHeadlessFarm(pyblish.api.ContextPlugin): """Setup instances for headless farm submission.""" @@ -27,7 +31,7 @@ class CollectHeadlessFarm(pyblish.api.ContextPlugin): instance.data["families"].append("headless_farm") -class SetupHeadlessFarm(pyblish.api.InstancePlugin): +class SetupHeadlessFarm(pyblish.api.InstancePlugin, AYONPyblishPluginMixin): """Setup instance for headless farm submission.""" order = pyblish.api.CollectorOrder + 0.4999 @@ -44,5 +48,6 @@ class SetupHeadlessFarm(pyblish.api.InstancePlugin): instance.data["families"] = ["headless_farm"] # Use the workfile instead of published. - attribute_values = instance.data.setdefault("attributeValues", {}) - attribute_values["use_published_workfile"] = False + publish_attributes = instance.data["publish_attributes"] + plugin_attributes = publish_attributes["NukeSubmitDeadline"] + plugin_attributes["use_published_workfile"] = False From 4c6eb7a84ddff30e7bb028ac2ae4473202df545e Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 23 May 2024 17:16:39 +0100 Subject: [PATCH 63/94] Revert use_published_workfile --- .../deadline/plugins/publish/submit_nuke_deadline.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/modules/deadline/plugins/publish/submit_nuke_deadline.py b/client/ayon_core/modules/deadline/plugins/publish/submit_nuke_deadline.py index 6e752a5455..db35c2ae67 100644 --- a/client/ayon_core/modules/deadline/plugins/publish/submit_nuke_deadline.py +++ b/client/ayon_core/modules/deadline/plugins/publish/submit_nuke_deadline.py @@ -115,11 +115,8 @@ class NukeSubmitDeadline(pyblish.api.InstancePlugin, render_path = instance.data['path'] script_path = context.data["currentFile"] - use_published_workfile = instance.data.get( - "use_published_workfile", - instance.data["attributeValues"].get( - "use_published_workfile", self.use_published_workfile - ) + use_published_workfile = instance.data["attributeValues"].get( + "use_published_workfile", self.use_published_workfile ) if use_published_workfile: script_path = self._get_published_workfile_path(context) From 23ee1caa44ea702212a04b08899757a63a004618 Mon Sep 17 00:00:00 2001 From: Toke Jepsen Date: Thu, 23 May 2024 17:22:00 +0100 Subject: [PATCH 64/94] Update client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../hosts/nuke/plugins/publish/collect_headless_farm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index 7db2ed117c..82b6b2b3e9 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -9,7 +9,7 @@ class CollectHeadlessFarm(pyblish.api.ContextPlugin): """Setup instances for headless farm submission.""" # Needs to be after CollectFromCreateContext - order = pyblish.api.CollectorOrder - 0.4 + order = pyblish.api.CollectorOrder - 0.49 label = "Collect Headless Farm" hosts = ["nuke"] From c8bc9ab0ea30e3f7748f00473ff25210cab3ef32 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 18:54:18 +0200 Subject: [PATCH 65/94] projects model has option to get status items --- .../ayon_core/tools/common_models/projects.py | 94 ++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/common_models/projects.py b/client/ayon_core/tools/common_models/projects.py index 19a38bee21..3911d0c403 100644 --- a/client/ayon_core/tools/common_models/projects.py +++ b/client/ayon_core/tools/common_models/projects.py @@ -5,7 +5,7 @@ import ayon_api import six from ayon_core.style import get_default_entity_icon_color -from ayon_core.lib import CacheItem +from ayon_core.lib import CacheItem, NestedCacheItem PROJECTS_MODEL_SENDER = "projects.model" @@ -17,6 +17,49 @@ class AbstractHierarchyController: pass +class StatusItem: + """Item representing status of project. + + Args: + name (str): Status name ("Not ready"). + color (str): Status color in hex ("#434a56"). + short (str): Short status name ("NRD"). + icon (str): Icon name in MaterialIcons ("fiber_new"). + state (Literal["not_started", "in_progress", "done", "blocked"]): + Status state. + + """ + def __init__(self, name, color, short, icon, state): + self.name = name + self.color = color + self.short = short + self.icon = icon + self.state = state + + def to_data(self): + return { + "name": self.name, + "color": self.color, + "short": self.short, + "icon": self.icon, + "state": self.state, + } + + @classmethod + def from_data(cls, data): + return cls(**data) + + @classmethod + def from_project_item(cls, status_data): + return cls( + name=status_data["name"], + color=status_data["color"], + short=status_data["shortName"], + icon=status_data["icon"], + state=status_data["state"], + ) + + class ProjectItem: """Item representing folder entity on a server. @@ -89,6 +132,9 @@ class ProjectsModel(object): self._projects_cache = CacheItem(default_factory=list) self._project_items_by_name = {} self._projects_by_name = {} + self._project_statuses_cache = NestedCacheItem( + levels=1, default_factory=list + ) self._is_refreshing = False self._controller = controller @@ -97,6 +143,7 @@ class ProjectsModel(object): self._projects_cache.reset() self._project_items_by_name = {} self._projects_by_name = {} + self._project_statuses_cache.reset() def refresh(self): self._refresh_projects_cache() @@ -124,6 +171,34 @@ class ProjectsModel(object): self._projects_by_name[project_name] = entity return self._projects_by_name[project_name] + def get_project_status_items(self, project_name, sender): + """Get project status items. + + Args: + project_name (str): Project name. + sender (Union[str, None]): Name of sender who asked for items. + + Returns: + list[StatusItem]: Status items for project. + + """ + statuses_cache = self._project_statuses_cache[project_name] + if not statuses_cache.is_valid: + with self._project_statuses_refresh_event_manager( + sender, project_name + ): + project_entity = None + if project_name: + project_entity = self.get_project_entity(project_name) + statuses = [] + if project_entity: + statuses = [ + StatusItem.from_project_item(status) + for status in project_entity["statuses"] + ] + statuses_cache.update_data(statuses) + return statuses_cache.get_data() + @contextlib.contextmanager def _project_refresh_event_manager(self, sender): self._is_refreshing = True @@ -143,6 +218,23 @@ class ProjectsModel(object): ) self._is_refreshing = False + @contextlib.contextmanager + def _project_statuses_refresh_event_manager(self, sender, project_name): + self._controller.emit_event( + "projects.statuses.refresh.started", + {"sender": sender, "project_name": project_name}, + PROJECTS_MODEL_SENDER + ) + try: + yield + + finally: + self._controller.emit_event( + "projects.statuses.refresh.finished", + {"sender": sender, "project_name": project_name}, + PROJECTS_MODEL_SENDER + ) + def _refresh_projects_cache(self, sender=None): if self._is_refreshing: return None From c575420bb579f73cf1f4a738c85141b9b4203298 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 18:55:00 +0200 Subject: [PATCH 66/94] project entities are cached values --- .../ayon_core/tools/common_models/projects.py | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/client/ayon_core/tools/common_models/projects.py b/client/ayon_core/tools/common_models/projects.py index 3911d0c403..d14963a4e9 100644 --- a/client/ayon_core/tools/common_models/projects.py +++ b/client/ayon_core/tools/common_models/projects.py @@ -131,10 +131,12 @@ class ProjectsModel(object): def __init__(self, controller): self._projects_cache = CacheItem(default_factory=list) self._project_items_by_name = {} - self._projects_by_name = {} self._project_statuses_cache = NestedCacheItem( levels=1, default_factory=list ) + self._projects_by_name = NestedCacheItem( + levels=1, default_factory=list + ) self._is_refreshing = False self._controller = controller @@ -142,8 +144,8 @@ class ProjectsModel(object): def reset(self): self._projects_cache.reset() self._project_items_by_name = {} - self._projects_by_name = {} self._project_statuses_cache.reset() + self._projects_by_name.reset() def refresh(self): self._refresh_projects_cache() @@ -164,12 +166,23 @@ class ProjectsModel(object): return self._projects_cache.get_data() def get_project_entity(self, project_name): - if project_name not in self._projects_by_name: + """Get project entity. + + Args: + project_name (str): Project name. + + Returns: + Union[dict[str, Any], None]: Project entity or None if project + was not found by name. + + """ + project_cache = self._projects_by_name[project_name] + if not project_cache.is_valid: entity = None if project_name: entity = ayon_api.get_project(project_name) - self._projects_by_name[project_name] = entity - return self._projects_by_name[project_name] + project_cache.update_data(entity) + return project_cache.get_data() def get_project_status_items(self, project_name, sender): """Get project status items. From 66122bfabe5fea58776ff5e2846ab8d3ef3eb27a Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 18:55:28 +0200 Subject: [PATCH 67/94] removed unused attribute --- client/ayon_core/tools/common_models/projects.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/ayon_core/tools/common_models/projects.py b/client/ayon_core/tools/common_models/projects.py index d14963a4e9..fa308de0a9 100644 --- a/client/ayon_core/tools/common_models/projects.py +++ b/client/ayon_core/tools/common_models/projects.py @@ -130,7 +130,6 @@ def _get_project_items_from_entitiy(projects): class ProjectsModel(object): def __init__(self, controller): self._projects_cache = CacheItem(default_factory=list) - self._project_items_by_name = {} self._project_statuses_cache = NestedCacheItem( levels=1, default_factory=list ) @@ -143,7 +142,6 @@ class ProjectsModel(object): def reset(self): self._projects_cache.reset() - self._project_items_by_name = {} self._project_statuses_cache.reset() self._projects_by_name.reset() From d572f929c2512c7ceea59fdba1cc480bee78f30a Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 18:55:40 +0200 Subject: [PATCH 68/94] use helper method to create ProjectItem --- .../ayon_core/tools/common_models/projects.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/common_models/projects.py b/client/ayon_core/tools/common_models/projects.py index fa308de0a9..5df7178bcc 100644 --- a/client/ayon_core/tools/common_models/projects.py +++ b/client/ayon_core/tools/common_models/projects.py @@ -83,6 +83,23 @@ class ProjectItem: } self.icon = icon + @classmethod + def from_entity(cls, project_entity): + """Creates folder item from entity. + + Args: + project_entity (dict[str, Any]): Project entity. + + Returns: + ProjectItem: Project item. + + """ + return cls( + project_entity["name"], + project_entity["active"], + project_entity["library"], + ) + def to_data(self): """Converts folder item to data. @@ -122,7 +139,7 @@ def _get_project_items_from_entitiy(projects): """ return [ - ProjectItem(project["name"], project["active"], project["library"]) + ProjectItem.from_entity(project) for project in projects ] From 1c282b1bbb80266b3e7241111aefbe102651c695 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 18:55:51 +0200 Subject: [PATCH 69/94] add docstring to 'refresh' method --- client/ayon_core/tools/common_models/projects.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/ayon_core/tools/common_models/projects.py b/client/ayon_core/tools/common_models/projects.py index 5df7178bcc..89dd881a10 100644 --- a/client/ayon_core/tools/common_models/projects.py +++ b/client/ayon_core/tools/common_models/projects.py @@ -163,6 +163,13 @@ class ProjectsModel(object): self._projects_by_name.reset() def refresh(self): + """Refresh project items. + + This method will requery list of ProjectItem returned by + 'get_project_items'. + + To reset all cached items use 'reset' method. + """ self._refresh_projects_cache() def get_project_items(self, sender): From 235cd4b69b2c158aa2424173b2a647d99c9f50b9 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 18:56:16 +0200 Subject: [PATCH 70/94] prepare backend for status value --- client/ayon_core/tools/loader/abstract.py | 25 +++++++++++++++++++ client/ayon_core/tools/loader/control.py | 5 ++++ .../ayon_core/tools/loader/models/products.py | 6 ++++- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/loader/abstract.py b/client/ayon_core/tools/loader/abstract.py index 7a7d335092..509db4d037 100644 --- a/client/ayon_core/tools/loader/abstract.py +++ b/client/ayon_core/tools/loader/abstract.py @@ -114,6 +114,7 @@ class VersionItem: thumbnail_id (Union[str, None]): Thumbnail id. published_time (Union[str, None]): Published time in format '%Y%m%dT%H%M%SZ'. + status (Union[str, None]): Status name. author (Union[str, None]): Author. frame_range (Union[str, None]): Frame range. duration (Union[int, None]): Duration. @@ -132,6 +133,7 @@ class VersionItem: thumbnail_id, published_time, author, + status, frame_range, duration, handles, @@ -146,6 +148,7 @@ class VersionItem: self.is_hero = is_hero self.published_time = published_time self.author = author + self.status = status self.frame_range = frame_range self.duration = duration self.handles = handles @@ -185,6 +188,7 @@ class VersionItem: "is_hero": self.is_hero, "published_time": self.published_time, "author": self.author, + "status": self.status, "frame_range": self.frame_range, "duration": self.duration, "handles": self.handles, @@ -488,6 +492,27 @@ class FrontendLoaderController(_BaseLoaderController): pass + @abstractmethod + def get_project_status_items(self, project_name, sender=None): + """Items for all projects available on server. + + Triggers event topics "projects.statuses.refresh.started" and + "projects.statuses.refresh.finished" with data: + { + "sender": sender, + "project_name": project_name + } + + Args: + project_name (Union[str, None]): Project name. + sender (Optional[str]): Sender who requested the items. + + Returns: + list[StatusItem]: List of status items. + """ + + pass + @abstractmethod def get_product_items(self, project_name, folder_ids, sender=None): """Product items for folder ids. diff --git a/client/ayon_core/tools/loader/control.py b/client/ayon_core/tools/loader/control.py index 0c9bb369c7..35188369c2 100644 --- a/client/ayon_core/tools/loader/control.py +++ b/client/ayon_core/tools/loader/control.py @@ -180,6 +180,11 @@ class LoaderController(BackendLoaderController, FrontendLoaderController): def get_project_items(self, sender=None): return self._projects_model.get_project_items(sender) + def get_project_status_items(self, project_name, sender=None): + return self._projects_model.get_project_status_items( + project_name, sender + ) + def get_folder_items(self, project_name, sender=None): return self._hierarchy_model.get_folder_items(project_name, sender) diff --git a/client/ayon_core/tools/loader/models/products.py b/client/ayon_core/tools/loader/models/products.py index a3bbc30a09..c9325c4480 100644 --- a/client/ayon_core/tools/loader/models/products.py +++ b/client/ayon_core/tools/loader/models/products.py @@ -58,6 +58,7 @@ def version_item_from_entity(version): thumbnail_id=version["thumbnailId"], published_time=published_time, author=author, + status=version["status"], frame_range=frame_range, duration=duration, handles=handles, @@ -526,8 +527,11 @@ class ProductsModel: products = list(ayon_api.get_products(project_name, **kwargs)) product_ids = {product["id"] for product in products} + # Add 'status' to fields -> fixed in ayon-python-api 1.0.4 + fields = ayon_api.get_default_fields_for_type("version") + fields.add("status") versions = ayon_api.get_versions( - project_name, product_ids=product_ids + project_name, product_ids=product_ids, fields=fields ) return self._create_product_items( From f9efd8f05d5adb726d2d9f3c7dab15de3d18a70c Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Thu, 23 May 2024 18:56:27 +0200 Subject: [PATCH 71/94] added status column in UI --- .../tools/loader/ui/products_model.py | 96 ++++++++++++------- 1 file changed, 60 insertions(+), 36 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/products_model.py b/client/ayon_core/tools/loader/ui/products_model.py index b465679c3b..76da76dbfb 100644 --- a/client/ayon_core/tools/loader/ui/products_model.py +++ b/client/ayon_core/tools/loader/ui/products_model.py @@ -22,18 +22,22 @@ VERSION_HERO_ROLE = QtCore.Qt.UserRole + 11 VERSION_NAME_ROLE = QtCore.Qt.UserRole + 12 VERSION_NAME_EDIT_ROLE = QtCore.Qt.UserRole + 13 VERSION_PUBLISH_TIME_ROLE = QtCore.Qt.UserRole + 14 -VERSION_AUTHOR_ROLE = QtCore.Qt.UserRole + 15 -VERSION_FRAME_RANGE_ROLE = QtCore.Qt.UserRole + 16 -VERSION_DURATION_ROLE = QtCore.Qt.UserRole + 17 -VERSION_HANDLES_ROLE = QtCore.Qt.UserRole + 18 -VERSION_STEP_ROLE = QtCore.Qt.UserRole + 19 -VERSION_AVAILABLE_ROLE = QtCore.Qt.UserRole + 20 -VERSION_THUMBNAIL_ID_ROLE = QtCore.Qt.UserRole + 21 -ACTIVE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 22 -REMOTE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 23 -REPRESENTATIONS_COUNT_ROLE = QtCore.Qt.UserRole + 24 -SYNC_ACTIVE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 25 -SYNC_REMOTE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 26 +VERSION_STATUS_NAME_ROLE = QtCore.Qt.UserRole + 15 +VERSION_STATUS_SHORT_ROLE = QtCore.Qt.UserRole + 16 +VERSION_STATUS_COLOR_ROLE = QtCore.Qt.UserRole + 17 +VERSION_STATUS_ROLE = QtCore.Qt.UserRole + 18 +VERSION_AUTHOR_ROLE = QtCore.Qt.UserRole + 19 +VERSION_FRAME_RANGE_ROLE = QtCore.Qt.UserRole + 20 +VERSION_DURATION_ROLE = QtCore.Qt.UserRole + 21 +VERSION_HANDLES_ROLE = QtCore.Qt.UserRole + 22 +VERSION_STEP_ROLE = QtCore.Qt.UserRole + 23 +VERSION_AVAILABLE_ROLE = QtCore.Qt.UserRole + 24 +VERSION_THUMBNAIL_ID_ROLE = QtCore.Qt.UserRole + 25 +ACTIVE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 26 +REMOTE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 27 +REPRESENTATIONS_COUNT_ROLE = QtCore.Qt.UserRole + 28 +SYNC_ACTIVE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 29 +SYNC_REMOTE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 30 class ProductsModel(QtGui.QStandardItemModel): @@ -46,6 +50,7 @@ class ProductsModel(QtGui.QStandardItemModel): "Version", "Time", "Author", + "Status", "Frames", "Duration", "Handles", @@ -69,11 +74,35 @@ class ProductsModel(QtGui.QStandardItemModel): ] ] + product_name_col = column_labels.index("Product name") + product_type_col = column_labels.index("Product type") + folders_label_col = column_labels.index("Folder") version_col = column_labels.index("Version") published_time_col = column_labels.index("Time") - folders_label_col = column_labels.index("Folder") + author_col = column_labels.index("Author") + status_col = column_labels.index("Status") + frame_range_col = column_labels.index("Frames") + duration_col = column_labels.index("Duration") + handles_col = column_labels.index("Handles") + step_col = column_labels.index("Step") in_scene_col = column_labels.index("In scene") sitesync_avail_col = column_labels.index("Availability") + _display_role_mapping = { + product_name_col: QtCore.Qt.DisplayRole, + product_type_col: PRODUCT_TYPE_ROLE, + folders_label_col: FOLDER_LABEL_ROLE, + version_col: VERSION_NAME_ROLE, + published_time_col: VERSION_PUBLISH_TIME_ROLE, + author_col: VERSION_AUTHOR_ROLE, + status_col: VERSION_STATUS_NAME_ROLE, + frame_range_col: VERSION_FRAME_RANGE_ROLE, + duration_col: VERSION_DURATION_ROLE, + handles_col: VERSION_HANDLES_ROLE, + step_col: VERSION_STEP_ROLE, + in_scene_col: PRODUCT_IN_SCENE_ROLE, + sitesync_avail_col: VERSION_AVAILABLE_ROLE, + + } def __init__(self, controller): super(ProductsModel, self).__init__() @@ -96,6 +125,7 @@ class ProductsModel(QtGui.QStandardItemModel): self._last_project_name = None self._last_folder_ids = [] + self._last_project_statuses = {} def get_product_item_indexes(self): return [ @@ -141,6 +171,15 @@ class ProductsModel(QtGui.QStandardItemModel): if not index.isValid(): return None + if role in (VERSION_STATUS_SHORT_ROLE, VERSION_STATUS_COLOR_ROLE): + status_name = self.data(index, VERSION_STATUS_NAME_ROLE) + status_item = self._last_project_statuses.get(status_name) + if status_item is None: + return "" + if role == VERSION_STATUS_SHORT_ROLE: + return status_item.short + return status_item.color + col = index.column() if col == 0: return super(ProductsModel, self).data(index, role) @@ -168,29 +207,8 @@ class ProductsModel(QtGui.QStandardItemModel): if role == QtCore.Qt.DisplayRole: if not index.data(PRODUCT_ID_ROLE): return None - if col == self.version_col: - role = VERSION_NAME_ROLE - elif col == 1: - role = PRODUCT_TYPE_ROLE - elif col == 2: - role = FOLDER_LABEL_ROLE - elif col == 4: - role = VERSION_PUBLISH_TIME_ROLE - elif col == 5: - role = VERSION_AUTHOR_ROLE - elif col == 6: - role = VERSION_FRAME_RANGE_ROLE - elif col == 7: - role = VERSION_DURATION_ROLE - elif col == 8: - role = VERSION_HANDLES_ROLE - elif col == 9: - role = VERSION_STEP_ROLE - elif col == 10: - role = PRODUCT_IN_SCENE_ROLE - elif col == 11: - role = VERSION_AVAILABLE_ROLE - else: + role = self._display_role_mapping.get(col) + if role is None: return None index = self.index(index.row(), 0, index.parent()) @@ -312,6 +330,7 @@ class ProductsModel(QtGui.QStandardItemModel): version_item.published_time, VERSION_PUBLISH_TIME_ROLE ) model_item.setData(version_item.author, VERSION_AUTHOR_ROLE) + model_item.setData(version_item.status, VERSION_STATUS_NAME_ROLE) model_item.setData(version_item.frame_range, VERSION_FRAME_RANGE_ROLE) model_item.setData(version_item.duration, VERSION_DURATION_ROLE) model_item.setData(version_item.handles, VERSION_HANDLES_ROLE) @@ -393,6 +412,11 @@ class ProductsModel(QtGui.QStandardItemModel): self._last_project_name = project_name self._last_folder_ids = folder_ids + status_items = self._controller.get_project_status_items(project_name) + self._last_project_statuses = { + status_item.name: status_item + for status_item in status_items + } active_site_icon_def = self._controller.get_active_site_icon_def( project_name From 3dfe36702904dd9575d1314410a4c1aaca055bd5 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 23 May 2024 22:40:33 +0100 Subject: [PATCH 72/94] Change to Render On Farm --- client/ayon_core/hosts/nuke/api/lib.py | 14 ++--- client/ayon_core/hosts/nuke/api/utils.py | 56 ++++++------------- .../nuke/plugins/create/create_write_image.py | 5 +- .../plugins/create/create_write_prerender.py | 6 +- .../plugins/create/create_write_render.py | 5 +- .../plugins/publish/collect_headless_farm.py | 29 +++++----- .../plugins/publish/extract_headless_farm.py | 8 +-- .../publish/increment_script_version.py | 2 +- server_addon/nuke/package.py | 2 +- .../nuke/server/settings/create_plugins.py | 4 +- 10 files changed, 58 insertions(+), 73 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/lib.py b/client/ayon_core/hosts/nuke/api/lib.py index f1a9418111..500a0f9601 100644 --- a/client/ayon_core/hosts/nuke/api/lib.py +++ b/client/ayon_core/hosts/nuke/api/lib.py @@ -1024,12 +1024,12 @@ def script_name(): return nuke.root().knob("name").value() -def add_button_headless_farm_submission(node): - name = "headlessFarmSubmission" - label = "Headless Farm Submission" +def add_button_render_on_farm(node): + name = "renderOnFarm" + label = "Render On Farm" value = ( - "from ayon_core.hosts.nuke.api.utils import submit_headless_farm;" - "submit_headless_farm(nuke.thisNode())" + "from ayon_core.hosts.nuke.api.utils import submit_render_on_farm;" + "submit_render_on_farm(nuke.thisNode())" ) knob = nuke.PyScript_Knob(name, label, value) knob.clearFlag(nuke.STARTLINE) @@ -1294,8 +1294,8 @@ def create_write_node( GN.addKnob(link) # Adding render farm submission button. - if data.get("headless_farm_submission", False): - add_button_headless_farm_submission(GN) + if data.get("render_on_farm", False): + add_button_render_on_farm(GN) # adding write to read button add_button_write_to_read(GN) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 08e2630cbd..1c9b0b8996 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -1,6 +1,5 @@ import os import re -import traceback import nuke @@ -151,48 +150,19 @@ def is_headless(): return QtWidgets.QApplication.instance() is None -def create_error_report(context): - """Create an error report based on the given pyblish context. - - This function iterates through the results in the context and formats any - errors into a comprehensive error report. - - Args: - context (dict): Pyblish context. - - Returns: - tuple: A tuple containing a boolean indicating success and a string - representing the error message. - """ - - error_message = "" - success = True - for result in context.data["results"]: - if result["success"]: - continue - - success = False - - err = result["error"] - error_message += "\n" - error_message += err.formatted_traceback - - return success, error_message - - -def submit_headless_farm(node): +def submit_render_on_farm(node): # Ensure code is executed in root context. if nuke.root() == nuke.thisNode(): - _submit_headless_farm(node) + _submit_render_on_farm(node) else: # If not in root context, move to the root context and then execute the # code. with nuke.root(): - _submit_headless_farm(node) + _submit_render_on_farm(node) -def _submit_headless_farm(node): - """Headless farm submission +def _submit_render_on_farm(node): + """Render on farm submission This function prepares the context for farm submission, validates it, extracts relevant data, copies the current workfile to a timestamped copy, @@ -217,15 +187,25 @@ def _submit_headless_farm(node): # Used in pyblish plugin to determine which instance to publish. context.data["node_name"] = node.name() # Used in pyblish plugins to determine whether to run or not. - context.data["headless_farm"] = True + context.data["render_on_farm"] = True context = pyblish.util.publish(context) - success, error_report = create_error_report(context) + error_message = "" + success = True + for result in context.data["results"]: + if result["success"]: + continue + + success = False + + err = result["error"] + error_message += "\n" + error_message += err.formatted_traceback if not success: show_message_dialog( - "Collection Errors", error_report, level="critical" + "Publish Errors", error_message, level="critical" ) return diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py b/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py index 046b99f6b0..fc2538f23d 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py +++ b/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py @@ -66,14 +66,15 @@ class CreateWriteImage(napi.NukeWriteCreator): def create_instance_node(self, product_name, instance_data): settings = self.project_settings["nuke"]["create"]["CreateWriteImage"] - settings = settings["instance_attributes"] # add fpath_template write_data = { "creator": self.__class__.__name__, "productName": product_name, "fpath_template": self.temp_rendering_path_template, - "headless_farm_submission": "headless_farm_submission" in settings + "render_on_farm": ( + "render_on_farm" in settings["instance_attributes"] + ) } write_data.update(instance_data) diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py b/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py index df906c9c25..47796d159c 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py +++ b/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py @@ -47,14 +47,16 @@ class CreateWritePrerender(napi.NukeWriteCreator): def create_instance_node(self, product_name, instance_data): settings = self.project_settings["nuke"]["create"] - settings = settings["CreateWritePrerender"]["instance_attributes"] + settings = settings["CreateWritePrerender"] # add fpath_template write_data = { "creator": self.__class__.__name__, "productName": product_name, "fpath_template": self.temp_rendering_path_template, - "headless_farm_submission": "headless_farm_submission" in settings + "render_on_farm": ( + "render_on_farm" in settings["instance_attributes"] + ) } write_data.update(instance_data) diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py b/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py index 5340fbdecc..4cb5ccdfa2 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py +++ b/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py @@ -41,15 +41,14 @@ class CreateWriteRender(napi.NukeWriteCreator): def create_instance_node(self, product_name, instance_data): settings = self.project_settings["nuke"]["create"]["CreateWriteRender"] - instance_attributes = settings["instance_attributes"] # add fpath_template write_data = { "creator": self.__class__.__name__, "productName": product_name, "fpath_template": self.temp_rendering_path_template, - "headless_farm_submission": ( - "headless_farm_submission" in instance_attributes + "render_on_farm": ( + "render_on_farm" in settings["instance_attributes"] ) } diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py index 82b6b2b3e9..3f49a2bf01 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py @@ -5,16 +5,16 @@ from ayon_core.pipeline.publish import ( ) -class CollectHeadlessFarm(pyblish.api.ContextPlugin): - """Setup instances for headless farm submission.""" +class CollectRenderOnFarm(pyblish.api.ContextPlugin): + """Setup instances for render on farm submission.""" # Needs to be after CollectFromCreateContext order = pyblish.api.CollectorOrder - 0.49 - label = "Collect Headless Farm" + label = "Collect Render On Farm" hosts = ["nuke"] def process(self, context): - if not context.data.get("headless_farm", False): + if not context.data.get("render_on_farm", False): return for instance in context: @@ -28,24 +28,27 @@ class CollectHeadlessFarm(pyblish.api.ContextPlugin): instance.data["active"] = False continue - instance.data["families"].append("headless_farm") + instance.data["families"].append("render_on_farm") + + # Enable for farm publishing. + instance.data["farm"] = True + + # Skip workfile version incremental save. + instance.context.data["increment_script_version"] = False -class SetupHeadlessFarm(pyblish.api.InstancePlugin, AYONPyblishPluginMixin): - """Setup instance for headless farm submission.""" +class SetupRenderOnFarm(pyblish.api.InstancePlugin, AYONPyblishPluginMixin): + """Setup instance for render on farm submission.""" order = pyblish.api.CollectorOrder + 0.4999 - label = "Setup Headless Farm" + label = "Setup Render On Farm" hosts = ["nuke"] - families = ["headless_farm"] + families = ["render_on_farm"] def process(self, instance): - # Enable for farm publishing. - instance.data["farm"] = True - # Clear the families as we only want the main family, ei. no review # etc. - instance.data["families"] = ["headless_farm"] + instance.data["families"] = ["render_on_farm"] # Use the workfile instead of published. publish_attributes = instance.data["publish_attributes"] diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py b/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py index 003e51aa1a..4ba55f8c46 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py @@ -7,16 +7,16 @@ import pyblish.api from ayon_core.pipeline import registered_host -class ExtractHeadlessFarm(pyblish.api.InstancePlugin): +class ExtractRenderOnFarm(pyblish.api.InstancePlugin): """Copy the workfile to a timestamped copy.""" order = pyblish.api.ExtractorOrder + 0.499 - label = "Extract Headless Farm" + label = "Extract Render On Farm" hosts = ["nuke"] - families = ["headless_farm"] + families = ["render_on_farm"] def process(self, instance): - if not instance.context.data.get("headless_farm", False): + if not instance.context.data.get("render_on_farm", False): return host = registered_host() diff --git a/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py b/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py index f20748b034..70fd04a985 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py +++ b/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py @@ -13,7 +13,7 @@ class IncrementScriptVersion(pyblish.api.ContextPlugin): hosts = ['nuke'] def process(self, context): - if context.data.get("headless_farm", False): + if not context.data.get("increment_script_version", True): return assert all(result["success"] for result in context.data["results"]), ( diff --git a/server_addon/nuke/package.py b/server_addon/nuke/package.py index bc166bd14e..d8decef208 100644 --- a/server_addon/nuke/package.py +++ b/server_addon/nuke/package.py @@ -1,3 +1,3 @@ name = "nuke" title = "Nuke" -version = "0.1.13" +version = "0.1.14" diff --git a/server_addon/nuke/server/settings/create_plugins.py b/server_addon/nuke/server/settings/create_plugins.py index 897a467118..e4a0f9c938 100644 --- a/server_addon/nuke/server/settings/create_plugins.py +++ b/server_addon/nuke/server/settings/create_plugins.py @@ -14,8 +14,8 @@ def instance_attributes_enum(): {"value": "farm_rendering", "label": "Farm rendering"}, {"value": "use_range_limit", "label": "Use range limit"}, { - "value": "headless_farm_submission", - "label": "Headless Farm Submission" + "value": "render_on_farm", + "label": "Render On Farm" } ] From cc5e18149788538c4db76f09aa0fe64dfdf2efa2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:12:36 +0200 Subject: [PATCH 73/94] remove redundand roles --- .../tools/loader/ui/products_model.py | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/products_model.py b/client/ayon_core/tools/loader/ui/products_model.py index 76da76dbfb..dedd68abfe 100644 --- a/client/ayon_core/tools/loader/ui/products_model.py +++ b/client/ayon_core/tools/loader/ui/products_model.py @@ -25,19 +25,18 @@ VERSION_PUBLISH_TIME_ROLE = QtCore.Qt.UserRole + 14 VERSION_STATUS_NAME_ROLE = QtCore.Qt.UserRole + 15 VERSION_STATUS_SHORT_ROLE = QtCore.Qt.UserRole + 16 VERSION_STATUS_COLOR_ROLE = QtCore.Qt.UserRole + 17 -VERSION_STATUS_ROLE = QtCore.Qt.UserRole + 18 -VERSION_AUTHOR_ROLE = QtCore.Qt.UserRole + 19 -VERSION_FRAME_RANGE_ROLE = QtCore.Qt.UserRole + 20 -VERSION_DURATION_ROLE = QtCore.Qt.UserRole + 21 -VERSION_HANDLES_ROLE = QtCore.Qt.UserRole + 22 -VERSION_STEP_ROLE = QtCore.Qt.UserRole + 23 -VERSION_AVAILABLE_ROLE = QtCore.Qt.UserRole + 24 -VERSION_THUMBNAIL_ID_ROLE = QtCore.Qt.UserRole + 25 -ACTIVE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 26 -REMOTE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 27 -REPRESENTATIONS_COUNT_ROLE = QtCore.Qt.UserRole + 28 -SYNC_ACTIVE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 29 -SYNC_REMOTE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 30 +VERSION_AUTHOR_ROLE = QtCore.Qt.UserRole + 18 +VERSION_FRAME_RANGE_ROLE = QtCore.Qt.UserRole + 19 +VERSION_DURATION_ROLE = QtCore.Qt.UserRole + 20 +VERSION_HANDLES_ROLE = QtCore.Qt.UserRole + 21 +VERSION_STEP_ROLE = QtCore.Qt.UserRole + 22 +VERSION_AVAILABLE_ROLE = QtCore.Qt.UserRole + 23 +VERSION_THUMBNAIL_ID_ROLE = QtCore.Qt.UserRole + 24 +ACTIVE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 25 +REMOTE_SITE_ICON_ROLE = QtCore.Qt.UserRole + 26 +REPRESENTATIONS_COUNT_ROLE = QtCore.Qt.UserRole + 27 +SYNC_ACTIVE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 28 +SYNC_REMOTE_SITE_AVAILABILITY = QtCore.Qt.UserRole + 29 class ProductsModel(QtGui.QStandardItemModel): From 4a70b7d26eb551b5a08f5e4c577bf5f783571e9f Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:13:23 +0200 Subject: [PATCH 74/94] better way how to set delegates --- .../tools/loader/ui/products_widget.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/products_widget.py b/client/ayon_core/tools/loader/ui/products_widget.py index d9f027153e..9c6a1dbb85 100644 --- a/client/ayon_core/tools/loader/ui/products_widget.py +++ b/client/ayon_core/tools/loader/ui/products_widget.py @@ -128,20 +128,17 @@ class ProductsWidget(QtWidgets.QWidget): products_view.setColumnWidth(idx, width) version_delegate = VersionDelegate() - products_view.setItemDelegateForColumn( - products_model.version_col, version_delegate) - time_delegate = PrettyTimeDelegate() - products_view.setItemDelegateForColumn( - products_model.published_time_col, time_delegate) - in_scene_delegate = LoadedInSceneDelegate() - products_view.setItemDelegateForColumn( - products_model.in_scene_col, in_scene_delegate) - sitesync_delegate = SiteSyncDelegate() - products_view.setItemDelegateForColumn( - products_model.sitesync_avail_col, sitesync_delegate) + + for col, delegate in ( + (products_model.version_col, version_delegate), + (products_model.published_time_col, time_delegate), + (products_model.in_scene_col, in_scene_delegate), + (products_model.sitesync_avail_col, sitesync_delegate), + ): + products_view.setItemDelegateForColumn(col, delegate) main_layout = QtWidgets.QHBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) From 50c26e3b71068be6695c6eb472ef3a5cbee26031 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:13:43 +0200 Subject: [PATCH 75/94] added delegate for status --- .../tools/loader/ui/products_delegates.py | 46 +++++++++++++++++++ .../tools/loader/ui/products_widget.py | 7 ++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/tools/loader/ui/products_delegates.py b/client/ayon_core/tools/loader/ui/products_delegates.py index 12ed1165ae..6bcb78ec66 100644 --- a/client/ayon_core/tools/loader/ui/products_delegates.py +++ b/client/ayon_core/tools/loader/ui/products_delegates.py @@ -6,6 +6,9 @@ from ayon_core.tools.utils.lib import format_version from .products_model import ( PRODUCT_ID_ROLE, VERSION_NAME_EDIT_ROLE, + VERSION_STATUS_NAME_ROLE, + VERSION_STATUS_SHORT_ROLE, + VERSION_STATUS_COLOR_ROLE, VERSION_ID_ROLE, PRODUCT_IN_SCENE_ROLE, ACTIVE_SITE_ICON_ROLE, @@ -194,6 +197,49 @@ class LoadedInSceneDelegate(QtWidgets.QStyledItemDelegate): option.palette.setBrush(QtGui.QPalette.Text, color) +class StatusDelegate(QtWidgets.QStyledItemDelegate): + """Delegate showing status name and short name.""" + + def paint(self, painter, option, index): + if option.widget: + style = option.widget.style() + else: + style = QtWidgets.QApplication.style() + + style.drawControl( + style.CE_ItemViewItem, option, painter, option.widget + ) + + painter.save() + + text_rect = style.subElementRect(style.SE_ItemViewItemText, option) + text_margin = style.proxy().pixelMetric( + style.PM_FocusFrameHMargin, option, option.widget + ) + 1 + padded_text_rect = text_rect.adjusted( + text_margin, 0, - text_margin, 0 + ) + + fm = QtGui.QFontMetrics(option.font) + text = index.data(VERSION_STATUS_NAME_ROLE) + if padded_text_rect.width() < fm.width(text): + text = index.data(VERSION_STATUS_SHORT_ROLE) + + status_color = index.data(VERSION_STATUS_COLOR_ROLE) + fg_color = QtGui.QColor(status_color) + pen = painter.pen() + pen.setColor(fg_color) + painter.setPen(pen) + + painter.drawText( + padded_text_rect, + option.displayAlignment, + text + ) + + painter.restore() + + class SiteSyncDelegate(QtWidgets.QStyledItemDelegate): """Paints icons and downloaded representation ration for both sites.""" diff --git a/client/ayon_core/tools/loader/ui/products_widget.py b/client/ayon_core/tools/loader/ui/products_widget.py index 9c6a1dbb85..3a30d83d52 100644 --- a/client/ayon_core/tools/loader/ui/products_widget.py +++ b/client/ayon_core/tools/loader/ui/products_widget.py @@ -22,7 +22,8 @@ from .products_model import ( from .products_delegates import ( VersionDelegate, LoadedInSceneDelegate, - SiteSyncDelegate + StatusDelegate, + SiteSyncDelegate, ) from .actions_utils import show_actions_menu @@ -89,6 +90,7 @@ class ProductsWidget(QtWidgets.QWidget): 90, # Product type 130, # Folder label 60, # Version + 100, # Status 125, # Time 75, # Author 75, # Frames @@ -129,12 +131,14 @@ class ProductsWidget(QtWidgets.QWidget): version_delegate = VersionDelegate() time_delegate = PrettyTimeDelegate() + status_delegate = StatusDelegate() in_scene_delegate = LoadedInSceneDelegate() sitesync_delegate = SiteSyncDelegate() for col, delegate in ( (products_model.version_col, version_delegate), (products_model.published_time_col, time_delegate), + (products_model.status_col, status_delegate), (products_model.in_scene_col, in_scene_delegate), (products_model.sitesync_avail_col, sitesync_delegate), ): @@ -172,6 +176,7 @@ class ProductsWidget(QtWidgets.QWidget): self._version_delegate = version_delegate self._time_delegate = time_delegate + self._status_delegate = status_delegate self._in_scene_delegate = in_scene_delegate self._sitesync_delegate = sitesync_delegate From 3c032fc764fe5a20cec2f18e4e2ad18c4dcb1542 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:13:54 +0200 Subject: [PATCH 76/94] move status column after version --- client/ayon_core/tools/loader/ui/products_model.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/products_model.py b/client/ayon_core/tools/loader/ui/products_model.py index dedd68abfe..f309473d10 100644 --- a/client/ayon_core/tools/loader/ui/products_model.py +++ b/client/ayon_core/tools/loader/ui/products_model.py @@ -47,9 +47,9 @@ class ProductsModel(QtGui.QStandardItemModel): "Product type", "Folder", "Version", + "Status", "Time", "Author", - "Status", "Frames", "Duration", "Handles", @@ -77,9 +77,9 @@ class ProductsModel(QtGui.QStandardItemModel): product_type_col = column_labels.index("Product type") folders_label_col = column_labels.index("Folder") version_col = column_labels.index("Version") + status_col = column_labels.index("Status") published_time_col = column_labels.index("Time") author_col = column_labels.index("Author") - status_col = column_labels.index("Status") frame_range_col = column_labels.index("Frames") duration_col = column_labels.index("Duration") handles_col = column_labels.index("Handles") @@ -91,9 +91,9 @@ class ProductsModel(QtGui.QStandardItemModel): product_type_col: PRODUCT_TYPE_ROLE, folders_label_col: FOLDER_LABEL_ROLE, version_col: VERSION_NAME_ROLE, + status_col: VERSION_STATUS_NAME_ROLE, published_time_col: VERSION_PUBLISH_TIME_ROLE, author_col: VERSION_AUTHOR_ROLE, - status_col: VERSION_STATUS_NAME_ROLE, frame_range_col: VERSION_FRAME_RANGE_ROLE, duration_col: VERSION_DURATION_ROLE, handles_col: VERSION_HANDLES_ROLE, From 7fd8ca81e4b7c8ef38051c00971f3b8f2c2fc29a Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:29:09 +0200 Subject: [PATCH 77/94] move traypublisher next to server codebase --- .../traypublisher/client/ayon_traypublisher}/__init__.py | 0 .../traypublisher/client/ayon_traypublisher}/addon.py | 0 .../traypublisher/client/ayon_traypublisher}/api/__init__.py | 0 .../traypublisher/client/ayon_traypublisher}/api/editorial.py | 0 .../traypublisher/client/ayon_traypublisher}/api/pipeline.py | 0 .../traypublisher/client/ayon_traypublisher}/api/plugin.py | 0 .../traypublisher/client/ayon_traypublisher}/batch_parsing.py | 0 .../traypublisher/client/ayon_traypublisher}/csv_publish.py | 0 .../ayon_traypublisher}/plugins/create/create_colorspace_look.py | 0 .../ayon_traypublisher}/plugins/create/create_csv_ingest.py | 0 .../client/ayon_traypublisher}/plugins/create/create_editorial.py | 0 .../plugins/create/create_editorial_package.py | 0 .../ayon_traypublisher}/plugins/create/create_from_settings.py | 0 .../ayon_traypublisher}/plugins/create/create_movie_batch.py | 0 .../client/ayon_traypublisher}/plugins/create/create_online.py | 0 .../ayon_traypublisher}/plugins/publish/collect_app_name.py | 0 .../ayon_traypublisher}/plugins/publish/collect_clip_instances.py | 0 .../plugins/publish/collect_colorspace_look.py | 0 .../plugins/publish/collect_csv_ingest_instance_data.py | 0 .../plugins/publish/collect_editorial_instances.py | 0 .../plugins/publish/collect_editorial_package.py | 0 .../plugins/publish/collect_editorial_reviewable.py | 0 .../plugins/publish/collect_explicit_colorspace.py | 0 .../plugins/publish/collect_frame_data_from_folder_entity.py | 0 .../ayon_traypublisher}/plugins/publish/collect_movie_batch.py | 0 .../ayon_traypublisher}/plugins/publish/collect_online_file.py | 0 .../ayon_traypublisher}/plugins/publish/collect_review_frames.py | 0 .../plugins/publish/collect_sequence_frame_data.py | 0 .../ayon_traypublisher}/plugins/publish/collect_shot_instances.py | 0 .../plugins/publish/collect_simple_instances.py | 0 .../client/ayon_traypublisher}/plugins/publish/collect_source.py | 0 .../plugins/publish/extract_colorspace_look.py | 0 .../ayon_traypublisher}/plugins/publish/extract_csv_file.py | 0 .../ayon_traypublisher}/plugins/publish/extract_editorial_pckg.py | 0 .../plugins/publish/help/validate_existing_version.xml | 0 .../plugins/publish/help/validate_frame_ranges.xml | 0 .../ayon_traypublisher}/plugins/publish/validate_colorspace.py | 0 .../plugins/publish/validate_colorspace_look.py | 0 .../plugins/publish/validate_editorial_package.py | 0 .../plugins/publish/validate_existing_version.py | 0 .../ayon_traypublisher}/plugins/publish/validate_filepaths.py | 0 .../ayon_traypublisher}/plugins/publish/validate_frame_ranges.py | 0 .../ayon_traypublisher}/plugins/publish/validate_online_file.py | 0 43 files changed, 0 insertions(+), 0 deletions(-) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/__init__.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/addon.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/api/__init__.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/api/editorial.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/api/pipeline.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/api/plugin.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/batch_parsing.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/csv_publish.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/create/create_colorspace_look.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/create/create_csv_ingest.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/create/create_editorial.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/create/create_editorial_package.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/create/create_from_settings.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/create/create_movie_batch.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/create/create_online.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_app_name.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_clip_instances.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_colorspace_look.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_csv_ingest_instance_data.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_editorial_instances.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_editorial_package.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_editorial_reviewable.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_explicit_colorspace.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_frame_data_from_folder_entity.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_movie_batch.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_online_file.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_review_frames.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_sequence_frame_data.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_shot_instances.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_simple_instances.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/collect_source.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/extract_colorspace_look.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/extract_csv_file.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/extract_editorial_pckg.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/help/validate_existing_version.xml (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/help/validate_frame_ranges.xml (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/validate_colorspace.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/validate_colorspace_look.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/validate_editorial_package.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/validate_existing_version.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/validate_filepaths.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/validate_frame_ranges.py (100%) rename {client/ayon_core/hosts/traypublisher => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/validate_online_file.py (100%) diff --git a/client/ayon_core/hosts/traypublisher/__init__.py b/server_addon/traypublisher/client/ayon_traypublisher/__init__.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/__init__.py rename to server_addon/traypublisher/client/ayon_traypublisher/__init__.py diff --git a/client/ayon_core/hosts/traypublisher/addon.py b/server_addon/traypublisher/client/ayon_traypublisher/addon.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/addon.py rename to server_addon/traypublisher/client/ayon_traypublisher/addon.py diff --git a/client/ayon_core/hosts/traypublisher/api/__init__.py b/server_addon/traypublisher/client/ayon_traypublisher/api/__init__.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/api/__init__.py rename to server_addon/traypublisher/client/ayon_traypublisher/api/__init__.py diff --git a/client/ayon_core/hosts/traypublisher/api/editorial.py b/server_addon/traypublisher/client/ayon_traypublisher/api/editorial.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/api/editorial.py rename to server_addon/traypublisher/client/ayon_traypublisher/api/editorial.py diff --git a/client/ayon_core/hosts/traypublisher/api/pipeline.py b/server_addon/traypublisher/client/ayon_traypublisher/api/pipeline.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/api/pipeline.py rename to server_addon/traypublisher/client/ayon_traypublisher/api/pipeline.py diff --git a/client/ayon_core/hosts/traypublisher/api/plugin.py b/server_addon/traypublisher/client/ayon_traypublisher/api/plugin.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/api/plugin.py rename to server_addon/traypublisher/client/ayon_traypublisher/api/plugin.py diff --git a/client/ayon_core/hosts/traypublisher/batch_parsing.py b/server_addon/traypublisher/client/ayon_traypublisher/batch_parsing.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/batch_parsing.py rename to server_addon/traypublisher/client/ayon_traypublisher/batch_parsing.py diff --git a/client/ayon_core/hosts/traypublisher/csv_publish.py b/server_addon/traypublisher/client/ayon_traypublisher/csv_publish.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/csv_publish.py rename to server_addon/traypublisher/client/ayon_traypublisher/csv_publish.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/create/create_colorspace_look.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/create/create_colorspace_look.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/create/create_csv_ingest.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_csv_ingest.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/create/create_csv_ingest.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_csv_ingest.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/create/create_editorial.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/create/create_editorial.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/create/create_editorial_package.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial_package.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/create/create_editorial_package.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial_package.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/create/create_from_settings.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_from_settings.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/create/create_from_settings.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_from_settings.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/create/create_movie_batch.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_movie_batch.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/create/create_movie_batch.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_movie_batch.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/create/create_online.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/create/create_online.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_app_name.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_app_name.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_app_name.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_app_name.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_clip_instances.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_clip_instances.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_clip_instances.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_clip_instances.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_colorspace_look.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_colorspace_look.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_colorspace_look.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_colorspace_look.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_csv_ingest_instance_data.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_csv_ingest_instance_data.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_csv_ingest_instance_data.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_csv_ingest_instance_data.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_editorial_instances.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_editorial_instances.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_editorial_instances.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_editorial_instances.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_editorial_package.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_editorial_package.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_editorial_package.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_editorial_package.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_editorial_reviewable.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_editorial_reviewable.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_editorial_reviewable.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_editorial_reviewable.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_explicit_colorspace.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_explicit_colorspace.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_explicit_colorspace.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_explicit_colorspace.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_frame_data_from_folder_entity.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_frame_data_from_folder_entity.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_frame_data_from_folder_entity.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_frame_data_from_folder_entity.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_movie_batch.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_movie_batch.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_movie_batch.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_movie_batch.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_online_file.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_online_file.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_online_file.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_online_file.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_review_frames.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_review_frames.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_review_frames.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_review_frames.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_sequence_frame_data.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_sequence_frame_data.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_sequence_frame_data.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_sequence_frame_data.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_shot_instances.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_shot_instances.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_shot_instances.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_shot_instances.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_simple_instances.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_simple_instances.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_simple_instances.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_simple_instances.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/collect_source.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_source.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/collect_source.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_source.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/extract_colorspace_look.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/extract_colorspace_look.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/extract_colorspace_look.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/extract_colorspace_look.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/extract_csv_file.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/extract_csv_file.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/extract_csv_file.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/extract_csv_file.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/extract_editorial_pckg.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/extract_editorial_pckg.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/extract_editorial_pckg.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/extract_editorial_pckg.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/help/validate_existing_version.xml b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/help/validate_existing_version.xml similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/help/validate_existing_version.xml rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/help/validate_existing_version.xml diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/help/validate_frame_ranges.xml b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/help/validate_frame_ranges.xml similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/help/validate_frame_ranges.xml rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/help/validate_frame_ranges.xml diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/validate_colorspace.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_colorspace.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/validate_colorspace.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_colorspace.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/validate_colorspace_look.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_colorspace_look.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/validate_colorspace_look.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_colorspace_look.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/validate_editorial_package.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_editorial_package.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/validate_editorial_package.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_editorial_package.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/validate_existing_version.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_existing_version.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/validate_existing_version.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_existing_version.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/validate_filepaths.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_filepaths.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/validate_filepaths.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_filepaths.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/validate_frame_ranges.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_frame_ranges.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/validate_frame_ranges.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_frame_ranges.py diff --git a/client/ayon_core/hosts/traypublisher/plugins/publish/validate_online_file.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_online_file.py similarity index 100% rename from client/ayon_core/hosts/traypublisher/plugins/publish/validate_online_file.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_online_file.py From a75af77907f2e53860fe2eb6cf3db3e9ff34f015 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:36:26 +0200 Subject: [PATCH 78/94] fix imports --- .../traypublisher/client/ayon_traypublisher/csv_publish.py | 2 +- .../plugins/create/create_colorspace_look.py | 2 +- .../ayon_traypublisher/plugins/create/create_csv_ingest.py | 4 +--- .../ayon_traypublisher/plugins/create/create_editorial.py | 4 ++-- .../plugins/create/create_editorial_package.py | 2 +- .../ayon_traypublisher/plugins/create/create_from_settings.py | 2 +- .../ayon_traypublisher/plugins/create/create_movie_batch.py | 4 ++-- .../client/ayon_traypublisher/plugins/create/create_online.py | 2 +- 8 files changed, 10 insertions(+), 12 deletions(-) diff --git a/server_addon/traypublisher/client/ayon_traypublisher/csv_publish.py b/server_addon/traypublisher/client/ayon_traypublisher/csv_publish.py index 2762172936..b7906c5706 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/csv_publish.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/csv_publish.py @@ -6,7 +6,7 @@ from ayon_core.lib.attribute_definitions import FileDefItem from ayon_core.pipeline import install_host from ayon_core.pipeline.create import CreateContext -from ayon_core.hosts.traypublisher.api import TrayPublisherHost +from ayon_traypublisher.api import TrayPublisherHost def csvpublish( diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py index da05afe86b..1cf98e8dab 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py @@ -15,7 +15,7 @@ from ayon_core.pipeline import ( CreatorError ) from ayon_core.pipeline import colorspace -from ayon_core.hosts.traypublisher.api.plugin import TrayPublishCreator +from ayon_traypublisher.api.plugin import TrayPublishCreator class CreateColorspaceLook(TrayPublishCreator): diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_csv_ingest.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_csv_ingest.py index 8143e8b45b..5a5deeada8 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_csv_ingest.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_csv_ingest.py @@ -13,9 +13,7 @@ from ayon_core.lib.transcoding import ( VIDEO_EXTENSIONS, IMAGE_EXTENSIONS ) from ayon_core.pipeline.create import CreatorError -from ayon_core.hosts.traypublisher.api.plugin import ( - TrayPublishCreator -) +from ayon_traypublisher.api.plugin import TrayPublishCreator class IngestCSV(TrayPublishCreator): diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py index 4057aee9a6..a2f6f211f5 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py @@ -4,11 +4,11 @@ from copy import deepcopy import ayon_api import opentimelineio as otio -from ayon_core.hosts.traypublisher.api.plugin import ( +from ayon_traypublisher.api.plugin import ( TrayPublishCreator, HiddenTrayPublishCreator ) -from ayon_core.hosts.traypublisher.api.editorial import ( +from ayon_traypublisher.api.editorial import ( ShotMetadataSolver ) from ayon_core.pipeline import CreatedInstance diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial_package.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial_package.py index 82b109be28..5f0a84be4a 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial_package.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial_package.py @@ -9,7 +9,7 @@ from ayon_core.lib.attribute_definitions import ( BoolDef, TextDef, ) -from ayon_core.hosts.traypublisher.api.plugin import TrayPublishCreator +from ayon_traypublisher.api.plugin import TrayPublishCreator class EditorialPackageCreator(TrayPublishCreator): diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_from_settings.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_from_settings.py index fe7ba4c4a4..13cf92ab10 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_from_settings.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_from_settings.py @@ -6,7 +6,7 @@ log = Logger.get_logger(__name__) def initialize(): - from ayon_core.hosts.traypublisher.api.plugin import SettingsCreator + from ayon_traypublisher.api.plugin import SettingsCreator project_name = os.environ["AYON_PROJECT_NAME"] project_settings = get_project_settings(project_name) diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_movie_batch.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_movie_batch.py index 546408b4d6..77b9b0df0a 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_movie_batch.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_movie_batch.py @@ -17,8 +17,8 @@ from ayon_core.pipeline.create import ( TaskNotSetError, ) -from ayon_core.hosts.traypublisher.api.plugin import TrayPublishCreator -from ayon_core.hosts.traypublisher.batch_parsing import ( +from ayon_traypublisher.api.plugin import TrayPublishCreator +from ayon_traypublisher.batch_parsing import ( get_folder_entity_from_filename ) diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py index f48037701e..a3d34d3d3a 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py @@ -14,7 +14,7 @@ from ayon_core.pipeline import ( CreatedInstance, CreatorError ) -from ayon_core.hosts.traypublisher.api.plugin import TrayPublishCreator +from ayon_traypublisher.api.plugin import TrayPublishCreator class OnlineCreator(TrayPublishCreator): From bf5d99d90421d5fe83bf102e6a4b60aad6423bcd Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:36:39 +0200 Subject: [PATCH 79/94] use ayon naming --- server_addon/traypublisher/client/ayon_traypublisher/addon.py | 4 ++-- .../traypublisher/client/ayon_traypublisher/api/plugin.py | 2 +- .../plugins/create/create_colorspace_look.py | 2 +- .../client/ayon_traypublisher/plugins/create/create_online.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/server_addon/traypublisher/client/ayon_traypublisher/addon.py b/server_addon/traypublisher/client/ayon_traypublisher/addon.py index 3dd275f223..3e72681e1d 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/addon.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/addon.py @@ -29,8 +29,8 @@ class TrayPublishAddon(AYONAddon, IHostAddon, ITrayAction): def on_action_trigger(self): self.run_traypublisher() - def connect_with_addons(self, enabled_modules): - """Collect publish paths from other modules.""" + def connect_with_addons(self, enabled_addons): + """Collect publish paths from other addons.""" publish_paths = self.manager.collect_plugin_paths()["publish"] self.publish_paths.extend(publish_paths) diff --git a/server_addon/traypublisher/client/ayon_traypublisher/api/plugin.py b/server_addon/traypublisher/client/ayon_traypublisher/api/plugin.py index 257d01eb50..973eb65b11 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/api/plugin.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/api/plugin.py @@ -22,7 +22,7 @@ from .pipeline import ( ) REVIEW_EXTENSIONS = set(IMAGE_EXTENSIONS) | set(VIDEO_EXTENSIONS) -SHARED_DATA_KEY = "openpype.traypublisher.instances" +SHARED_DATA_KEY = "ayon.traypublisher.instances" class HiddenTrayPublishCreator(HiddenCreator): diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py index 1cf98e8dab..901bd758ba 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_colorspace_look.py @@ -21,7 +21,7 @@ from ayon_traypublisher.api.plugin import TrayPublishCreator class CreateColorspaceLook(TrayPublishCreator): """Creates colorspace look files.""" - identifier = "io.openpype.creators.traypublisher.colorspace_look" + identifier = "io.ayon.creators.traypublisher.colorspace_look" label = "Colorspace Look" product_type = "ociolook" description = "Publishes color space look file." diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py index a3d34d3d3a..135a11c0c6 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_online.py @@ -20,7 +20,7 @@ from ayon_traypublisher.api.plugin import TrayPublishCreator class OnlineCreator(TrayPublishCreator): """Creates instance from file and retains its original name.""" - identifier = "io.openpype.creators.traypublisher.online" + identifier = "io.ayon.creators.traypublisher.online" label = "Online" product_type = "online" description = "Publish file retaining its original file name" From e043f1930cba54f257b5bd7660c828ef46911ece Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:37:48 +0200 Subject: [PATCH 80/94] move tool to traypublisher addon --- server_addon/traypublisher/client/ayon_traypublisher/addon.py | 4 ++-- .../traypublisher/client/ayon_traypublisher/ui}/__init__.py | 0 .../traypublisher/client/ayon_traypublisher/ui}/window.py | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename {client/ayon_core/tools/traypublisher => server_addon/traypublisher/client/ayon_traypublisher/ui}/__init__.py (100%) rename {client/ayon_core/tools/traypublisher => server_addon/traypublisher/client/ayon_traypublisher/ui}/window.py (100%) diff --git a/server_addon/traypublisher/client/ayon_traypublisher/addon.py b/server_addon/traypublisher/client/ayon_traypublisher/addon.py index 3e72681e1d..5432cb1a92 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/addon.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/addon.py @@ -55,9 +55,9 @@ def cli_main(): def launch(): """Launch TrayPublish tool UI.""" - from ayon_core.tools import traypublisher + from ayon_traypublisher import ui - traypublisher.main() + ui.main() @cli_main.command() diff --git a/client/ayon_core/tools/traypublisher/__init__.py b/server_addon/traypublisher/client/ayon_traypublisher/ui/__init__.py similarity index 100% rename from client/ayon_core/tools/traypublisher/__init__.py rename to server_addon/traypublisher/client/ayon_traypublisher/ui/__init__.py diff --git a/client/ayon_core/tools/traypublisher/window.py b/server_addon/traypublisher/client/ayon_traypublisher/ui/window.py similarity index 100% rename from client/ayon_core/tools/traypublisher/window.py rename to server_addon/traypublisher/client/ayon_traypublisher/ui/window.py From a4fa52cb422958d500f2b28c50bec1372e30d8bb Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:39:17 +0200 Subject: [PATCH 81/94] define milestone version --- client/ayon_core/addon/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py index d49358b0d2..dba25510be 100644 --- a/client/ayon_core/addon/base.py +++ b/client/ayon_core/addon/base.py @@ -52,6 +52,7 @@ IGNORED_MODULES_IN_AYON = set() MOVED_ADDON_MILESTONE_VERSIONS = { "applications": VersionInfo(0, 2, 0), "clockify": VersionInfo(0, 2, 0), + "traypublisher": VersionInfo(0, 2, 0), "tvpaint": VersionInfo(0, 2, 0), } From 5375cabc2b75f9ac045186025e4a8d950fb864b7 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:39:25 +0200 Subject: [PATCH 82/94] updated package.py --- server_addon/traypublisher/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server_addon/traypublisher/package.py b/server_addon/traypublisher/package.py index c138a2296d..ea04835b45 100644 --- a/server_addon/traypublisher/package.py +++ b/server_addon/traypublisher/package.py @@ -1,3 +1,10 @@ name = "traypublisher" title = "TrayPublisher" -version = "0.1.5" +version = "0.2.0" + +client_dir = "ayon_traypublisher" + +ayon_required_addons = { + "core": ">0.3.2", +} +ayon_compatible_addons = {} From 0a1989badc7c3f32fac41a2a1745ab7ea8ebec76 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 10:44:11 +0200 Subject: [PATCH 83/94] move extract trim video audio to traypublisher addon --- .../plugins/publish/extract_trim_video_audio.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {client/ayon_core => server_addon/traypublisher/client/ayon_traypublisher}/plugins/publish/extract_trim_video_audio.py (100%) diff --git a/client/ayon_core/plugins/publish/extract_trim_video_audio.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/extract_trim_video_audio.py similarity index 100% rename from client/ayon_core/plugins/publish/extract_trim_video_audio.py rename to server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/extract_trim_video_audio.py From add37d28c2513499011c9f90659415d702786889 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 24 May 2024 14:10:43 +0200 Subject: [PATCH 84/94] fix import --- .../traypublisher/client/ayon_traypublisher/ui/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server_addon/traypublisher/client/ayon_traypublisher/ui/window.py b/server_addon/traypublisher/client/ayon_traypublisher/ui/window.py index 4700e20531..288dac8529 100644 --- a/server_addon/traypublisher/client/ayon_traypublisher/ui/window.py +++ b/server_addon/traypublisher/client/ayon_traypublisher/ui/window.py @@ -13,7 +13,6 @@ import qtawesome from ayon_core.lib import AYONSettingsRegistry, is_running_from_build from ayon_core.pipeline import install_host -from ayon_core.hosts.traypublisher.api import TrayPublisherHost from ayon_core.tools.publisher.control_qt import QtPublisherController from ayon_core.tools.publisher.window import PublisherWindow from ayon_core.tools.common_models import ProjectsModel @@ -24,6 +23,7 @@ from ayon_core.tools.utils import ( ProjectSortFilterProxy, PROJECT_NAME_ROLE, ) +from ayon_traypublisher.api import TrayPublisherHost class TrayPublisherRegistry(AYONSettingsRegistry): From da4da46c9cd5600f56ded8bf5a3985b488796e83 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 24 May 2024 15:28:02 +0200 Subject: [PATCH 85/94] Blacklisting plugins for workfile version validation and incrementing Refactored render submission process to handle plugins differently, bypassing version validation and incrementing by removing specific plugins from the list. --- client/ayon_core/hosts/nuke/api/utils.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/client/ayon_core/hosts/nuke/api/utils.py index 1c9b0b8996..646bb0ece1 100644 --- a/client/ayon_core/hosts/nuke/api/utils.py +++ b/client/ayon_core/hosts/nuke/api/utils.py @@ -189,7 +189,17 @@ def _submit_render_on_farm(node): # Used in pyblish plugins to determine whether to run or not. context.data["render_on_farm"] = True - context = pyblish.util.publish(context) + # Since we need to bypass version validation and incrementing, we need to + # remove the plugins from the list that are responsible for these tasks. + plugins = pyblish.api.discover() + blacklist = ["IncrementScriptVersion", "ValidateVersion"] + plugins = [ + plugin + for plugin in plugins + if plugin.__name__ not in blacklist + ] + + context = pyblish.util.publish(context, plugins=plugins) error_message = "" success = True From 158e9b75536af222632571d40758e8cdc43851c0 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Fri, 24 May 2024 16:19:50 +0200 Subject: [PATCH 86/94] Publish representation with `isIntermediate` flag in data - Adjusted method parameters in ExporterReview class for better readability. - Added colorspace parameter to get_representation_data method. - Included representation data with isIntermediate flag for identifying intermediate files. --- client/ayon_core/hosts/nuke/api/plugin.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/hosts/nuke/api/plugin.py b/client/ayon_core/hosts/nuke/api/plugin.py index ec13104d4d..ffe0cf2a2c 100644 --- a/client/ayon_core/hosts/nuke/api/plugin.py +++ b/client/ayon_core/hosts/nuke/api/plugin.py @@ -572,8 +572,11 @@ class ExporterReview(object): self.fhead = self.fhead.replace("#", "")[:-1] def get_representation_data( - self, tags=None, range=False, - custom_tags=None, colorspace=None + self, + tags=None, + range=False, + custom_tags=None, + colorspace=None, ): """ Add representation data to self.data @@ -584,6 +587,8 @@ class ExporterReview(object): Defaults to False. custom_tags (list[str], optional): user inputted custom tags. Defaults to None. + colorspace (str, optional): colorspace name. + Defaults to None. """ add_tags = tags or [] repre = { @@ -591,7 +596,13 @@ class ExporterReview(object): "ext": self.ext, "files": self.file, "stagingDir": self.staging_dir, - "tags": [self.name.replace("_", "-")] + add_tags + "tags": [self.name.replace("_", "-")] + add_tags, + "data": { + # making sure that once intermediate file is published + # as representation, we will be able to then identify it + # from representation.data.isIntermediate + "isIntermediate": True + }, } if custom_tags: @@ -999,7 +1010,7 @@ class ExporterReviewMov(ExporterReview): tags=tags + add_tags, custom_tags=add_custom_tags, range=True, - colorspace=colorspace + colorspace=colorspace, ) self.log.debug("Representation... `{}`".format(self.data)) From 3d6f1a7c27a9e029c81d92a57cccaf305d32d330 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 14:20:20 +0200 Subject: [PATCH 87/94] nuke host folder migrated into server_addons --- .../nuke/client/ayon_nuke}/__init__.py | 0 .../nuke/client/ayon_nuke}/addon.py | 0 .../nuke/client/ayon_nuke}/api/__init__.py | 0 .../nuke/client/ayon_nuke}/api/actions.py | 0 .../nuke/client/ayon_nuke}/api/command.py | 0 .../nuke/client/ayon_nuke}/api/constants.py | 0 .../nuke/client/ayon_nuke}/api/gizmo_menu.py | 0 .../nuke/client/ayon_nuke}/api/lib.py | 10 +++++----- .../nuke/client/ayon_nuke}/api/pipeline.py | 8 ++++---- .../nuke/client/ayon_nuke}/api/plugin.py | 2 +- .../nuke/client/ayon_nuke}/api/utils.py | 0 .../client/ayon_nuke}/api/workfile_template_builder.py | 0 .../nuke/client/ayon_nuke}/api/workio.py | 0 .../client/ayon_nuke}/hooks/pre_nukeassist_setup.py | 0 .../nuke/client/ayon_nuke}/plugins/__init__.py | 0 .../nuke/client/ayon_nuke}/plugins/create/__init__.py | 0 .../client/ayon_nuke}/plugins/create/convert_legacy.py | 4 ++-- .../ayon_nuke}/plugins/create/create_backdrop.py | 2 +- .../client/ayon_nuke}/plugins/create/create_camera.py | 4 ++-- .../client/ayon_nuke}/plugins/create/create_gizmo.py | 2 +- .../client/ayon_nuke}/plugins/create/create_model.py | 2 +- .../client/ayon_nuke}/plugins/create/create_source.py | 2 +- .../ayon_nuke}/plugins/create/create_write_image.py | 2 +- .../plugins/create/create_write_prerender.py | 2 +- .../ayon_nuke}/plugins/create/create_write_render.py | 2 +- .../ayon_nuke}/plugins/create/workfile_creator.py | 4 ++-- .../ayon_nuke}/plugins/inventory/repair_old_loaders.py | 2 +- .../ayon_nuke}/plugins/inventory/select_containers.py | 2 +- .../nuke/client/ayon_nuke}/plugins/load/actions.py | 2 +- .../client/ayon_nuke}/plugins/load/load_backdrop.py | 6 +++--- .../client/ayon_nuke}/plugins/load/load_camera_abc.py | 4 ++-- .../nuke/client/ayon_nuke}/plugins/load/load_clip.py | 6 +++--- .../client/ayon_nuke}/plugins/load/load_effects.py | 2 +- .../client/ayon_nuke}/plugins/load/load_effects_ip.py | 4 ++-- .../nuke/client/ayon_nuke}/plugins/load/load_gizmo.py | 4 ++-- .../client/ayon_nuke}/plugins/load/load_gizmo_ip.py | 4 ++-- .../nuke/client/ayon_nuke}/plugins/load/load_image.py | 4 ++-- .../client/ayon_nuke}/plugins/load/load_matchmove.py | 0 .../nuke/client/ayon_nuke}/plugins/load/load_model.py | 4 ++-- .../client/ayon_nuke}/plugins/load/load_ociolook.py | 2 +- .../ayon_nuke}/plugins/load/load_script_precomp.py | 4 ++-- .../ayon_nuke}/plugins/publish/collect_backdrop.py | 2 +- .../ayon_nuke}/plugins/publish/collect_context_data.py | 2 +- .../ayon_nuke}/plugins/publish/collect_framerate.py | 0 .../client/ayon_nuke}/plugins/publish/collect_gizmo.py | 0 .../plugins/publish/collect_headless_farm.py | 0 .../client/ayon_nuke}/plugins/publish/collect_model.py | 0 .../plugins/publish/collect_nuke_instance_data.py | 0 .../client/ayon_nuke}/plugins/publish/collect_reads.py | 0 .../ayon_nuke}/plugins/publish/collect_slate_node.py | 0 .../ayon_nuke}/plugins/publish/collect_workfile.py | 0 .../ayon_nuke}/plugins/publish/collect_writes.py | 0 .../ayon_nuke}/plugins/publish/extract_backdrop.py | 2 +- .../ayon_nuke}/plugins/publish/extract_camera.py | 2 +- .../client/ayon_nuke}/plugins/publish/extract_gizmo.py | 4 ++-- .../plugins/publish/extract_headless_farm.py | 0 .../client/ayon_nuke}/plugins/publish/extract_model.py | 2 +- .../ayon_nuke}/plugins/publish/extract_ouput_node.py | 2 +- .../plugins/publish/extract_output_directory.py | 0 .../ayon_nuke}/plugins/publish/extract_render_local.py | 0 .../ayon_nuke}/plugins/publish/extract_review_data.py | 0 .../plugins/publish/extract_review_data_lut.py | 4 ++-- .../plugins/publish/extract_review_intermediates.py | 4 ++-- .../ayon_nuke}/plugins/publish/extract_script_save.py | 0 .../ayon_nuke}/plugins/publish/extract_slate_frame.py | 2 +- .../plugins/publish/help/validate_asset_context.xml | 0 .../plugins/publish/help/validate_backdrop.xml | 0 .../ayon_nuke}/plugins/publish/help/validate_gizmo.xml | 0 .../ayon_nuke}/plugins/publish/help/validate_knobs.xml | 0 .../publish/help/validate_output_resolution.xml | 0 .../plugins/publish/help/validate_proxy_mode.xml | 0 .../plugins/publish/help/validate_rendered_frames.xml | 0 .../publish/help/validate_script_attributes.xml | 0 .../plugins/publish/help/validate_write_nodes.xml | 0 .../plugins/publish/increment_script_version.py | 0 .../ayon_nuke}/plugins/publish/remove_ouput_node.py | 0 .../plugins/publish/validate_asset_context.py | 2 +- .../ayon_nuke}/plugins/publish/validate_backdrop.py | 0 .../plugins/publish/validate_exposed_knobs.py | 2 +- .../ayon_nuke}/plugins/publish/validate_gizmo.py | 0 .../ayon_nuke}/plugins/publish/validate_knobs.py | 0 .../plugins/publish/validate_output_resolution.py | 0 .../ayon_nuke}/plugins/publish/validate_proxy_mode.py | 0 .../plugins/publish/validate_rendered_frames.py | 0 .../plugins/publish/validate_script_attributes.py | 2 +- .../ayon_nuke}/plugins/publish/validate_write_nodes.py | 2 +- .../plugins/workfile_build/create_placeholder.py | 4 ++-- .../plugins/workfile_build/load_placeholder.py | 4 ++-- .../nuke/client/ayon_nuke}/startup/__init__.py | 0 .../nuke/client/ayon_nuke}/startup/clear_rendered.py | 0 .../client/ayon_nuke}/startup/custom_write_node.py | 2 +- .../ayon_nuke}/startup/frame_setting_for_read_nodes.py | 0 .../nuke/client/ayon_nuke}/startup/menu.py | 2 +- .../nuke/client/ayon_nuke}/startup/write_to_read.py | 0 .../ayon_nuke}/vendor/google/protobuf/__init__.py | 0 .../ayon_nuke}/vendor/google/protobuf/any_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/api_pb2.py | 0 .../vendor/google/protobuf/compiler/__init__.py | 0 .../vendor/google/protobuf/compiler/plugin_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/descriptor.py | 0 .../vendor/google/protobuf/descriptor_database.py | 0 .../vendor/google/protobuf/descriptor_pb2.py | 0 .../vendor/google/protobuf/descriptor_pool.py | 0 .../ayon_nuke}/vendor/google/protobuf/duration_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/empty_pb2.py | 0 .../vendor/google/protobuf/field_mask_pb2.py | 0 .../vendor/google/protobuf/internal/__init__.py | 0 .../vendor/google/protobuf/internal/_parameterized.py | 0 .../google/protobuf/internal/api_implementation.py | 0 .../vendor/google/protobuf/internal/builder.py | 0 .../vendor/google/protobuf/internal/containers.py | 0 .../vendor/google/protobuf/internal/decoder.py | 0 .../vendor/google/protobuf/internal/encoder.py | 0 .../google/protobuf/internal/enum_type_wrapper.py | 0 .../vendor/google/protobuf/internal/extension_dict.py | 0 .../google/protobuf/internal/message_listener.py | 0 .../protobuf/internal/message_set_extensions_pb2.py | 0 .../protobuf/internal/missing_enum_values_pb2.py | 0 .../protobuf/internal/more_extensions_dynamic_pb2.py | 0 .../google/protobuf/internal/more_extensions_pb2.py | 0 .../google/protobuf/internal/more_messages_pb2.py | 0 .../vendor/google/protobuf/internal/no_package_pb2.py | 0 .../vendor/google/protobuf/internal/python_message.py | 0 .../vendor/google/protobuf/internal/type_checkers.py | 0 .../google/protobuf/internal/well_known_types.py | 0 .../vendor/google/protobuf/internal/wire_format.py | 0 .../ayon_nuke}/vendor/google/protobuf/json_format.py | 0 .../ayon_nuke}/vendor/google/protobuf/message.py | 0 .../vendor/google/protobuf/message_factory.py | 0 .../ayon_nuke}/vendor/google/protobuf/proto_builder.py | 0 .../vendor/google/protobuf/pyext/__init__.py | 0 .../vendor/google/protobuf/pyext/cpp_message.py | 0 .../vendor/google/protobuf/pyext/python_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/reflection.py | 0 .../ayon_nuke}/vendor/google/protobuf/service.py | 0 .../vendor/google/protobuf/service_reflection.py | 0 .../vendor/google/protobuf/source_context_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/struct_pb2.py | 0 .../vendor/google/protobuf/symbol_database.py | 0 .../ayon_nuke}/vendor/google/protobuf/text_encoding.py | 0 .../ayon_nuke}/vendor/google/protobuf/text_format.py | 0 .../ayon_nuke}/vendor/google/protobuf/timestamp_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/type_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/util/__init__.py | 0 .../vendor/google/protobuf/util/json_format_pb2.py | 0 .../google/protobuf/util/json_format_proto3_pb2.py | 0 .../ayon_nuke}/vendor/google/protobuf/wrappers_pb2.py | 0 147 files changed, 71 insertions(+), 71 deletions(-) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/addon.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/actions.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/command.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/constants.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/gizmo_menu.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/lib.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/pipeline.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/plugin.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/utils.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/workfile_template_builder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/api/workio.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/hooks/pre_nukeassist_setup.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/convert_legacy.py (93%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_backdrop.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_camera.py (95%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_gizmo.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_model.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_source.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_write_image.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_write_prerender.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/create_write_render.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/create/workfile_creator.py (96%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/inventory/repair_old_loaders.py (94%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/inventory/select_containers.py (88%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/actions.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_backdrop.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_camera_abc.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_clip.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_effects.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_effects_ip.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_gizmo.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_gizmo_ip.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_image.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_matchmove.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_model.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_ociolook.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/load/load_script_precomp.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_backdrop.py (97%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_context_data.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_framerate.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_gizmo.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_headless_farm.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_model.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_nuke_instance_data.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_reads.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_slate_node.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_workfile.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/collect_writes.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_backdrop.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_camera.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_gizmo.py (96%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_headless_farm.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_model.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_ouput_node.py (95%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_output_directory.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_render_local.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_review_data.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_review_data_lut.py (95%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_review_intermediates.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_script_save.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/extract_slate_frame.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_asset_context.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_backdrop.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_gizmo.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_knobs.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_output_resolution.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_proxy_mode.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_rendered_frames.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_script_attributes.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/help/validate_write_nodes.xml (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/increment_script_version.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/remove_ouput_node.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_asset_context.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_backdrop.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_exposed_knobs.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_gizmo.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_knobs.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_output_resolution.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_proxy_mode.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_rendered_frames.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_script_attributes.py (98%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/publish/validate_write_nodes.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/workfile_build/create_placeholder.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/plugins/workfile_build/load_placeholder.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/clear_rendered.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/custom_write_node.py (99%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/frame_setting_for_read_nodes.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/menu.py (64%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/startup/write_to_read.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/any_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/api_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/compiler/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/compiler/plugin_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/descriptor.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/descriptor_database.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/descriptor_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/descriptor_pool.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/duration_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/empty_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/field_mask_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/_parameterized.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/api_implementation.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/builder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/containers.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/decoder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/encoder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/enum_type_wrapper.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/extension_dict.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/message_listener.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/message_set_extensions_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/missing_enum_values_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/more_extensions_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/more_messages_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/no_package_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/python_message.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/type_checkers.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/well_known_types.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/internal/wire_format.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/json_format.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/message.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/message_factory.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/proto_builder.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/pyext/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/pyext/cpp_message.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/pyext/python_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/reflection.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/service.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/service_reflection.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/source_context_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/struct_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/symbol_database.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/text_encoding.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/text_format.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/timestamp_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/type_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/util/__init__.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/util/json_format_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/util/json_format_proto3_pb2.py (100%) rename {client/ayon_core/hosts/nuke => server_addon/nuke/client/ayon_nuke}/vendor/google/protobuf/wrappers_pb2.py (100%) diff --git a/client/ayon_core/hosts/nuke/__init__.py b/server_addon/nuke/client/ayon_nuke/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/__init__.py rename to server_addon/nuke/client/ayon_nuke/__init__.py diff --git a/client/ayon_core/hosts/nuke/addon.py b/server_addon/nuke/client/ayon_nuke/addon.py similarity index 100% rename from client/ayon_core/hosts/nuke/addon.py rename to server_addon/nuke/client/ayon_nuke/addon.py diff --git a/client/ayon_core/hosts/nuke/api/__init__.py b/server_addon/nuke/client/ayon_nuke/api/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/__init__.py rename to server_addon/nuke/client/ayon_nuke/api/__init__.py diff --git a/client/ayon_core/hosts/nuke/api/actions.py b/server_addon/nuke/client/ayon_nuke/api/actions.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/actions.py rename to server_addon/nuke/client/ayon_nuke/api/actions.py diff --git a/client/ayon_core/hosts/nuke/api/command.py b/server_addon/nuke/client/ayon_nuke/api/command.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/command.py rename to server_addon/nuke/client/ayon_nuke/api/command.py diff --git a/client/ayon_core/hosts/nuke/api/constants.py b/server_addon/nuke/client/ayon_nuke/api/constants.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/constants.py rename to server_addon/nuke/client/ayon_nuke/api/constants.py diff --git a/client/ayon_core/hosts/nuke/api/gizmo_menu.py b/server_addon/nuke/client/ayon_nuke/api/gizmo_menu.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/gizmo_menu.py rename to server_addon/nuke/client/ayon_nuke/api/gizmo_menu.py diff --git a/client/ayon_core/hosts/nuke/api/lib.py b/server_addon/nuke/client/ayon_nuke/api/lib.py similarity index 99% rename from client/ayon_core/hosts/nuke/api/lib.py rename to server_addon/nuke/client/ayon_nuke/api/lib.py index 500a0f9601..09dab4687a 100644 --- a/client/ayon_core/hosts/nuke/api/lib.py +++ b/server_addon/nuke/client/ayon_nuke/api/lib.py @@ -354,7 +354,7 @@ def imprint(node, data, tab=None): Examples: ``` import nuke - from ayon_core.hosts.nuke.api import lib + from ayon_nuke.api import lib node = nuke.createNode("NoOp") data = { @@ -419,7 +419,7 @@ def add_publish_knob(node): return node -@deprecated("ayon_core.hosts.nuke.api.lib.set_node_data") +@deprecated("ayon_nuke.api.lib.set_node_data") def set_avalon_knob_data(node, data=None, prefix="avalon:"): """[DEPRECATED] Sets data into nodes's avalon knob @@ -485,7 +485,7 @@ def set_avalon_knob_data(node, data=None, prefix="avalon:"): return node -@deprecated("ayon_core.hosts.nuke.api.lib.get_node_data") +@deprecated("ayon_nuke.api.lib.get_node_data") def get_avalon_knob_data(node, prefix="avalon:", create=True): """[DEPRECATED] Gets a data from nodes's avalon knob @@ -1028,7 +1028,7 @@ def add_button_render_on_farm(node): name = "renderOnFarm" label = "Render On Farm" value = ( - "from ayon_core.hosts.nuke.api.utils import submit_render_on_farm;" + "from ayon_nuke.api.utils import submit_render_on_farm;" "submit_render_on_farm(nuke.thisNode())" ) knob = nuke.PyScript_Knob(name, label, value) @@ -2469,7 +2469,7 @@ def _launch_workfile_app(): host_tools.show_workfiles(parent=None, on_top=True) -@deprecated("ayon_core.hosts.nuke.api.lib.start_workfile_template_builder") +@deprecated("ayon_nuke.api.lib.start_workfile_template_builder") def process_workfile_builder(): """ [DEPRECATED] Process workfile builder on nuke start diff --git a/client/ayon_core/hosts/nuke/api/pipeline.py b/server_addon/nuke/client/ayon_nuke/api/pipeline.py similarity index 99% rename from client/ayon_core/hosts/nuke/api/pipeline.py rename to server_addon/nuke/client/ayon_nuke/api/pipeline.py index d35a2e89e0..0425dd20d4 100644 --- a/client/ayon_core/hosts/nuke/api/pipeline.py +++ b/server_addon/nuke/client/ayon_nuke/api/pipeline.py @@ -188,10 +188,10 @@ def reload_config(): """ for module in ( - "ayon_core.hosts.nuke.api.actions", - "ayon_core.hosts.nuke.api.menu", - "ayon_core.hosts.nuke.api.plugin", - "ayon_core.hosts.nuke.api.lib", + "ayon_nuke.api.actions", + "ayon_nuke.api.menu", + "ayon_nuke.api.plugin", + "ayon_nuke.api.lib", ): log.info("Reloading module: {}...".format(module)) diff --git a/client/ayon_core/hosts/nuke/api/plugin.py b/server_addon/nuke/client/ayon_nuke/api/plugin.py similarity index 99% rename from client/ayon_core/hosts/nuke/api/plugin.py rename to server_addon/nuke/client/ayon_nuke/api/plugin.py index ec13104d4d..03b4af3475 100644 --- a/client/ayon_core/hosts/nuke/api/plugin.py +++ b/server_addon/nuke/client/ayon_nuke/api/plugin.py @@ -1038,7 +1038,7 @@ def convert_to_valid_instaces(): } return mapping[product_type] - from ayon_core.hosts.nuke.api import workio + from ayon_nuke.api import workio task_name = get_current_task_name() diff --git a/client/ayon_core/hosts/nuke/api/utils.py b/server_addon/nuke/client/ayon_nuke/api/utils.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/utils.py rename to server_addon/nuke/client/ayon_nuke/api/utils.py diff --git a/client/ayon_core/hosts/nuke/api/workfile_template_builder.py b/server_addon/nuke/client/ayon_nuke/api/workfile_template_builder.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/workfile_template_builder.py rename to server_addon/nuke/client/ayon_nuke/api/workfile_template_builder.py diff --git a/client/ayon_core/hosts/nuke/api/workio.py b/server_addon/nuke/client/ayon_nuke/api/workio.py similarity index 100% rename from client/ayon_core/hosts/nuke/api/workio.py rename to server_addon/nuke/client/ayon_nuke/api/workio.py diff --git a/client/ayon_core/hosts/nuke/hooks/pre_nukeassist_setup.py b/server_addon/nuke/client/ayon_nuke/hooks/pre_nukeassist_setup.py similarity index 100% rename from client/ayon_core/hosts/nuke/hooks/pre_nukeassist_setup.py rename to server_addon/nuke/client/ayon_nuke/hooks/pre_nukeassist_setup.py diff --git a/client/ayon_core/hosts/nuke/plugins/__init__.py b/server_addon/nuke/client/ayon_nuke/plugins/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/__init__.py rename to server_addon/nuke/client/ayon_nuke/plugins/__init__.py diff --git a/client/ayon_core/hosts/nuke/plugins/create/__init__.py b/server_addon/nuke/client/ayon_nuke/plugins/create/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/create/__init__.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/__init__.py diff --git a/client/ayon_core/hosts/nuke/plugins/create/convert_legacy.py b/server_addon/nuke/client/ayon_nuke/plugins/create/convert_legacy.py similarity index 93% rename from client/ayon_core/hosts/nuke/plugins/create/convert_legacy.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/convert_legacy.py index 8fb8abfbbf..65e719d15b 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/convert_legacy.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/convert_legacy.py @@ -1,12 +1,12 @@ from ayon_core.pipeline import AYON_INSTANCE_ID, AVALON_INSTANCE_ID from ayon_core.pipeline.create.creator_plugins import ProductConvertorPlugin -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( INSTANCE_DATA_KNOB, get_node_data, get_avalon_knob_data, NODE_TAB_NAME, ) -from ayon_core.hosts.nuke.api.plugin import convert_to_valid_instaces +from ayon_nuke.api.plugin import convert_to_valid_instaces import nuke diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/create/create_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py index cefd9501ec..6d50b066d7 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py @@ -1,6 +1,6 @@ from nukescripts import autoBackdrop -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( NukeCreator, maintained_selection, select_nodes diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_camera.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py similarity index 95% rename from client/ayon_core/hosts/nuke/plugins/create/create_camera.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py index 764de84dcf..acf7448232 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_camera.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py @@ -1,10 +1,10 @@ import nuke -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( NukeCreator, NukeCreatorError, maintained_selection ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( create_camera_node_by_version ) diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/create/create_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py index ccc6aa13bd..cc1c4edf82 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py @@ -1,5 +1,5 @@ import nuke -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( NukeCreator, NukeCreatorError, maintained_selection diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_model.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/create/create_model.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py index 507b7a1b57..6c1bf612b9 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py @@ -1,5 +1,5 @@ import nuke -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( NukeCreator, NukeCreatorError, maintained_selection diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_source.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/create/create_source.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py index ac6b8f694b..b2a21f032d 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_source.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py @@ -1,7 +1,7 @@ import nuke import six import sys -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( INSTANCE_DATA_KNOB, NukeCreator, NukeCreatorError, diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/create/create_write_image.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py index fc2538f23d..43f9d4c207 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py @@ -12,7 +12,7 @@ from ayon_core.lib import ( EnumDef ) from ayon_core.hosts.nuke import api as napi -from ayon_core.hosts.nuke.api.plugin import exposed_write_knobs +from ayon_nuke.api.plugin import exposed_write_knobs class CreateWriteImage(napi.NukeWriteCreator): diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py index 47796d159c..91b0022c86 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_prerender.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py @@ -9,7 +9,7 @@ from ayon_core.lib import ( BoolDef ) from ayon_core.hosts.nuke import api as napi -from ayon_core.hosts.nuke.api.plugin import exposed_write_knobs +from ayon_nuke.api.plugin import exposed_write_knobs class CreateWritePrerender(napi.NukeWriteCreator): diff --git a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/create/create_write_render.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py index 4cb5ccdfa2..85a09d65b7 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/create_write_render.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py @@ -9,7 +9,7 @@ from ayon_core.lib import ( BoolDef ) from ayon_core.hosts.nuke import api as napi -from ayon_core.hosts.nuke.api.plugin import exposed_write_knobs +from ayon_nuke.api.plugin import exposed_write_knobs class CreateWriteRender(napi.NukeWriteCreator): diff --git a/client/ayon_core/hosts/nuke/plugins/create/workfile_creator.py b/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py similarity index 96% rename from client/ayon_core/hosts/nuke/plugins/create/workfile_creator.py rename to server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py index b9d83a2b48..c49ca1f502 100644 --- a/client/ayon_core/hosts/nuke/plugins/create/workfile_creator.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py @@ -1,11 +1,11 @@ import ayon_api -import ayon_core.hosts.nuke.api as api +import ayon_nuke.api as api from ayon_core.pipeline import ( AutoCreator, CreatedInstance, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( INSTANCE_DATA_KNOB, set_node_data ) diff --git a/client/ayon_core/hosts/nuke/plugins/inventory/repair_old_loaders.py b/server_addon/nuke/client/ayon_nuke/plugins/inventory/repair_old_loaders.py similarity index 94% rename from client/ayon_core/hosts/nuke/plugins/inventory/repair_old_loaders.py rename to server_addon/nuke/client/ayon_nuke/plugins/inventory/repair_old_loaders.py index 7bb5c8ef20..11d65d4b8c 100644 --- a/client/ayon_core/hosts/nuke/plugins/inventory/repair_old_loaders.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/inventory/repair_old_loaders.py @@ -1,6 +1,6 @@ from ayon_core.lib import Logger from ayon_core.pipeline import InventoryAction -from ayon_core.hosts.nuke.api.lib import set_avalon_knob_data +from ayon_nuke.api.lib import set_avalon_knob_data class RepairOldLoaders(InventoryAction): diff --git a/client/ayon_core/hosts/nuke/plugins/inventory/select_containers.py b/server_addon/nuke/client/ayon_nuke/plugins/inventory/select_containers.py similarity index 88% rename from client/ayon_core/hosts/nuke/plugins/inventory/select_containers.py rename to server_addon/nuke/client/ayon_nuke/plugins/inventory/select_containers.py index 2fa9c06984..f67c8c16e9 100644 --- a/client/ayon_core/hosts/nuke/plugins/inventory/select_containers.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/inventory/select_containers.py @@ -1,5 +1,5 @@ from ayon_core.pipeline import InventoryAction -from ayon_core.hosts.nuke.api.command import viewer_update_and_undo_stop +from ayon_nuke.api.command import viewer_update_and_undo_stop class SelectContainers(InventoryAction): diff --git a/client/ayon_core/hosts/nuke/plugins/load/actions.py b/server_addon/nuke/client/ayon_nuke/plugins/load/actions.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/actions.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/actions.py index 53cb03087b..a4e2b156a3 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/actions.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/actions.py @@ -4,7 +4,7 @@ from ayon_core.lib import Logger from ayon_core.pipeline import load -from ayon_core.hosts.nuke.api import lib +from ayon_nuke.api import lib log = Logger.get_logger(__name__) diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/load/load_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py index 50af8a4eb9..f21920cdd2 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py @@ -6,7 +6,7 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( find_free_space_to_paste_nodes, maintained_selection, reset_selection, @@ -14,8 +14,8 @@ from ayon_core.hosts.nuke.api.lib import ( get_avalon_knob_data, set_avalon_knob_data ) -from ayon_core.hosts.nuke.api.command import viewer_update_and_undo_stop -from ayon_core.hosts.nuke.api import containerise, update_container +from ayon_nuke.api.command import viewer_update_and_undo_stop +from ayon_nuke.api import containerise, update_container class LoadBackdropNodes(load.LoaderPlugin): diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_camera_abc.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_camera_abc.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py index 3c7d4f3bb2..a1e0eb0ecc 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_camera_abc.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py @@ -5,12 +5,12 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection ) diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_clip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/load/load_clip.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py index 7fa90da86f..cc2e7359b9 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_clip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py @@ -12,11 +12,11 @@ from ayon_core.pipeline.colorspace import ( get_imageio_file_rules_colorspace_from_filepath, get_current_context_imageio_config_preset, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( get_imageio_input_colorspace, maintained_selection ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop, @@ -26,7 +26,7 @@ from ayon_core.lib.transcoding import ( VIDEO_EXTENSIONS, IMAGE_EXTENSIONS ) -from ayon_core.hosts.nuke.api import plugin +from ayon_nuke.api import plugin class LoadClip(plugin.NukeLoader): diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_effects.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/load/load_effects.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py index be7420fcf0..ea397a6ae3 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_effects.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py @@ -8,7 +8,7 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_effects_ip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/load/load_effects_ip.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py index 9bb430b37b..3ced3fb4f0 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_effects_ip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py @@ -8,8 +8,8 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api import lib -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import lib +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py index 57d00795ae..b3822e9de2 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py @@ -5,13 +5,13 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection, get_avalon_knob_data, set_avalon_knob_data, swap_node_with_dependency, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_gizmo_ip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_gizmo_ip.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py index ed2b1ec458..2fb3201108 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_gizmo_ip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py @@ -6,14 +6,14 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection, create_backdrop, get_avalon_knob_data, set_avalon_knob_data, swap_node_with_dependency, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_image.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_image.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py index b5fccd8a0d..b98668d983 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py @@ -7,10 +7,10 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( get_imageio_input_colorspace ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_matchmove.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/load/load_matchmove.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_model.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/load/load_model.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py index 40862cd1e0..2d509775f5 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py @@ -5,8 +5,8 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import maintained_selection -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api.lib import maintained_selection +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_ociolook.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/load/load_ociolook.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py index c369030b65..9210e83d6a 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_ociolook.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py @@ -10,7 +10,7 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( containerise, viewer_update_and_undo_stop, update_container, diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_script_precomp.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/load/load_script_precomp.py rename to server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py index d6699be164..e68ae2651b 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_script_precomp.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py @@ -5,8 +5,8 @@ from ayon_core.pipeline import ( load, get_representation_path, ) -from ayon_core.hosts.nuke.api.lib import get_avalon_knob_data -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api.lib import get_avalon_knob_data +from ayon_nuke.api import ( containerise, update_container, viewer_update_and_undo_stop diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py similarity index 97% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py index fc17de95b4..89136fa52b 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py @@ -1,6 +1,6 @@ from pprint import pformat import pyblish.api -from ayon_core.hosts.nuke.api import lib as pnlib +from ayon_nuke.api import lib as pnlib import nuke diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_context_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_context_data.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py index 0a032e5a2d..0a5f1563d6 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/collect_context_data.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py @@ -2,7 +2,7 @@ import os import nuke import pyblish.api from ayon_core.lib import get_version_from_path -import ayon_core.hosts.nuke.api as napi +import ayon_nuke.api as napi from ayon_core.pipeline import KnownPublishError diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_framerate.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_framerate.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_headless_farm.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_model.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_model.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_nuke_instance_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_nuke_instance_data.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_reads.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_reads.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_slate_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_slate_node.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_workfile.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_workfile.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/collect_writes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/collect_writes.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py index e53ce9015a..ec9e664a7c 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py @@ -5,7 +5,7 @@ import nuke import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection, reset_selection, select_nodes diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_camera.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_camera.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py index a1a5acb63b..dfb4b04f9a 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_camera.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py @@ -6,7 +6,7 @@ import nuke import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api.lib import maintained_selection +from ayon_nuke.api.lib import maintained_selection class ExtractCamera(publish.Extractor): diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py similarity index 96% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py index 2a2e2255fd..3a8d418ff3 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py @@ -4,8 +4,8 @@ import nuke import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api import utils as pnutils -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api import utils as pnutils +from ayon_nuke.api.lib import ( maintained_selection, reset_selection, select_nodes diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_headless_farm.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_model.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_model.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py index 36896fe595..fce47714a4 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py @@ -4,7 +4,7 @@ import nuke import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( maintained_selection, select_nodes ) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_ouput_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py similarity index 95% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_ouput_node.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py index b8e038a4f5..c0e5c4334e 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_ouput_node.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py @@ -1,6 +1,6 @@ import nuke import pyblish.api -from ayon_core.hosts.nuke.api.lib import maintained_selection +from ayon_nuke.api.lib import maintained_selection class CreateOutputNode(pyblish.api.ContextPlugin): diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_output_directory.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_output_directory.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_render_local.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_render_local.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_review_data.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_data_lut.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py similarity index 95% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_review_data_lut.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py index 0674a2dd55..808ba9d8a7 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_data_lut.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py @@ -2,8 +2,8 @@ import os import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api import plugin -from ayon_core.hosts.nuke.api.lib import maintained_selection +from ayon_nuke.api import plugin +from ayon_nuke.api.lib import maintained_selection class ExtractReviewDataLut(publish.Extractor): diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py index 82c7b6e4c5..99e02536a4 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_review_intermediates.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py @@ -4,8 +4,8 @@ from pprint import pformat import pyblish.api from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api import plugin -from ayon_core.hosts.nuke.api.lib import maintained_selection +from ayon_nuke.api import plugin +from ayon_nuke.api.lib import maintained_selection class ExtractReviewIntermediates(publish.Extractor): diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_script_save.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_script_save.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/extract_slate_frame.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/publish/extract_slate_frame.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py index 627888ac92..ff01779208 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/extract_slate_frame.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py @@ -7,7 +7,7 @@ import pyblish.api import six from ayon_core.pipeline import publish -from ayon_core.hosts.nuke.api import ( +from ayon_nuke.api import ( maintained_selection, duplicate_node, get_view_process_node diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_asset_context.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_asset_context.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_asset_context.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_asset_context.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_backdrop.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_backdrop.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_backdrop.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_backdrop.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_gizmo.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_gizmo.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_gizmo.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_gizmo.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_knobs.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_knobs.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_knobs.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_knobs.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_output_resolution.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_output_resolution.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_output_resolution.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_output_resolution.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_proxy_mode.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_proxy_mode.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_proxy_mode.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_proxy_mode.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_rendered_frames.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_rendered_frames.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_rendered_frames.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_rendered_frames.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_script_attributes.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_script_attributes.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_script_attributes.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_script_attributes.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/help/validate_write_nodes.xml b/server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_write_nodes.xml similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/help/validate_write_nodes.xml rename to server_addon/nuke/client/ayon_nuke/plugins/publish/help/validate_write_nodes.xml diff --git a/client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/increment_script_version.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/remove_ouput_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/remove_ouput_node.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_asset_context.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_asset_context.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py index 93a30aa438..f747732cbf 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/validate_asset_context.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py @@ -10,7 +10,7 @@ from ayon_core.pipeline.publish import ( PublishXmlValidationError, OptionalPyblishPluginMixin ) -from ayon_core.hosts.nuke.api import SelectInstanceNodeAction +from ayon_nuke.api import SelectInstanceNodeAction class ValidateCorrectAssetContext( diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_backdrop.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_exposed_knobs.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_exposed_knobs.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py index 217fe6fb85..7ff13bca30 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/validate_exposed_knobs.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py @@ -1,7 +1,7 @@ import pyblish.api from ayon_core.pipeline.publish import get_errored_instances_from_context -from ayon_core.hosts.nuke.api.lib import link_knobs +from ayon_nuke.api.lib import link_knobs from ayon_core.pipeline.publish import ( OptionalPyblishPluginMixin, PublishValidationError diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_gizmo.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_knobs.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_knobs.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_output_resolution.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_output_resolution.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_proxy_mode.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_proxy_mode.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_rendered_frames.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py similarity index 100% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_rendered_frames.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_script_attributes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py similarity index 98% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_script_attributes.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py index 2bd2034079..15a586580e 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/validate_script_attributes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py @@ -5,7 +5,7 @@ from ayon_core.pipeline import ( OptionalPyblishPluginMixin ) from ayon_core.pipeline.publish import RepairAction -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( WorkfileSettings ) diff --git a/client/ayon_core/hosts/nuke/plugins/publish/validate_write_nodes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/publish/validate_write_nodes.py rename to server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py index 0244c1d504..6a76bf06d1 100644 --- a/client/ayon_core/hosts/nuke/plugins/publish/validate_write_nodes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py @@ -2,7 +2,7 @@ from collections import defaultdict import pyblish.api from ayon_core.pipeline.publish import get_errored_instances_from_context -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( get_write_node_template_attr, set_node_knobs_from_settings, color_gui_to_int diff --git a/client/ayon_core/hosts/nuke/plugins/workfile_build/create_placeholder.py b/server_addon/nuke/client/ayon_nuke/plugins/workfile_build/create_placeholder.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/workfile_build/create_placeholder.py rename to server_addon/nuke/client/ayon_nuke/plugins/workfile_build/create_placeholder.py index a5490021e4..4d43d59bad 100644 --- a/client/ayon_core/hosts/nuke/plugins/workfile_build/create_placeholder.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/workfile_build/create_placeholder.py @@ -4,7 +4,7 @@ from ayon_core.pipeline.workfile.workfile_template_builder import ( CreatePlaceholderItem, PlaceholderCreateMixin, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( find_free_space_to_paste_nodes, get_extreme_positions, get_group_io_nodes, @@ -18,7 +18,7 @@ from ayon_core.hosts.nuke.api.lib import ( duplicate_node, node_tempfile, ) -from ayon_core.hosts.nuke.api.workfile_template_builder import ( +from ayon_nuke.api.workfile_template_builder import ( NukePlaceholderPlugin ) diff --git a/client/ayon_core/hosts/nuke/plugins/workfile_build/load_placeholder.py b/server_addon/nuke/client/ayon_nuke/plugins/workfile_build/load_placeholder.py similarity index 99% rename from client/ayon_core/hosts/nuke/plugins/workfile_build/load_placeholder.py rename to server_addon/nuke/client/ayon_nuke/plugins/workfile_build/load_placeholder.py index 258f48c9d3..68bc10e41b 100644 --- a/client/ayon_core/hosts/nuke/plugins/workfile_build/load_placeholder.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/workfile_build/load_placeholder.py @@ -4,7 +4,7 @@ from ayon_core.pipeline.workfile.workfile_template_builder import ( LoadPlaceholderItem, PlaceholderLoadMixin, ) -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( find_free_space_to_paste_nodes, get_extreme_positions, get_group_io_nodes, @@ -18,7 +18,7 @@ from ayon_core.hosts.nuke.api.lib import ( duplicate_node, node_tempfile, ) -from ayon_core.hosts.nuke.api.workfile_template_builder import ( +from ayon_nuke.api.workfile_template_builder import ( NukePlaceholderPlugin ) diff --git a/client/ayon_core/hosts/nuke/startup/__init__.py b/server_addon/nuke/client/ayon_nuke/startup/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/startup/__init__.py rename to server_addon/nuke/client/ayon_nuke/startup/__init__.py diff --git a/client/ayon_core/hosts/nuke/startup/clear_rendered.py b/server_addon/nuke/client/ayon_nuke/startup/clear_rendered.py similarity index 100% rename from client/ayon_core/hosts/nuke/startup/clear_rendered.py rename to server_addon/nuke/client/ayon_nuke/startup/clear_rendered.py diff --git a/client/ayon_core/hosts/nuke/startup/custom_write_node.py b/server_addon/nuke/client/ayon_nuke/startup/custom_write_node.py similarity index 99% rename from client/ayon_core/hosts/nuke/startup/custom_write_node.py rename to server_addon/nuke/client/ayon_nuke/startup/custom_write_node.py index f119e69919..5b0f240a49 100644 --- a/client/ayon_core/hosts/nuke/startup/custom_write_node.py +++ b/server_addon/nuke/client/ayon_nuke/startup/custom_write_node.py @@ -3,7 +3,7 @@ import os import nuke import nukescripts from ayon_core.pipeline import Anatomy, get_current_project_name -from ayon_core.hosts.nuke.api.lib import ( +from ayon_nuke.api.lib import ( set_node_knobs_from_settings, get_nuke_imageio_settings ) diff --git a/client/ayon_core/hosts/nuke/startup/frame_setting_for_read_nodes.py b/server_addon/nuke/client/ayon_nuke/startup/frame_setting_for_read_nodes.py similarity index 100% rename from client/ayon_core/hosts/nuke/startup/frame_setting_for_read_nodes.py rename to server_addon/nuke/client/ayon_nuke/startup/frame_setting_for_read_nodes.py diff --git a/client/ayon_core/hosts/nuke/startup/menu.py b/server_addon/nuke/client/ayon_nuke/startup/menu.py similarity index 64% rename from client/ayon_core/hosts/nuke/startup/menu.py rename to server_addon/nuke/client/ayon_nuke/startup/menu.py index 2559e2142a..c3dd8cda8f 100644 --- a/client/ayon_core/hosts/nuke/startup/menu.py +++ b/server_addon/nuke/client/ayon_nuke/startup/menu.py @@ -1,5 +1,5 @@ from ayon_core.pipeline import install_host -from ayon_core.hosts.nuke.api import NukeHost +from ayon_nuke.api import NukeHost host = NukeHost() install_host(host) diff --git a/client/ayon_core/hosts/nuke/startup/write_to_read.py b/server_addon/nuke/client/ayon_nuke/startup/write_to_read.py similarity index 100% rename from client/ayon_core/hosts/nuke/startup/write_to_read.py rename to server_addon/nuke/client/ayon_nuke/startup/write_to_read.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/any_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/any_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/any_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/any_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/api_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/api_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/api_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/api_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/compiler/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/compiler/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/compiler/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/compiler/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/compiler/plugin_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/compiler/plugin_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/compiler/plugin_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/compiler/plugin_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_database.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_database.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_database.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_database.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_pool.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_pool.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/descriptor_pool.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/descriptor_pool.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/duration_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/duration_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/duration_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/duration_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/empty_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/empty_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/empty_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/empty_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/field_mask_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/field_mask_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/field_mask_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/field_mask_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/_parameterized.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/_parameterized.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/_parameterized.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/_parameterized.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/api_implementation.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/api_implementation.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/api_implementation.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/api_implementation.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/builder.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/builder.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/builder.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/builder.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/containers.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/containers.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/containers.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/containers.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/decoder.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/decoder.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/decoder.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/decoder.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/encoder.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/encoder.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/encoder.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/encoder.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/enum_type_wrapper.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/enum_type_wrapper.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/enum_type_wrapper.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/enum_type_wrapper.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/extension_dict.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/extension_dict.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/extension_dict.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/extension_dict.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/message_listener.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/message_listener.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/message_listener.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/message_listener.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/message_set_extensions_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/message_set_extensions_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/message_set_extensions_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/message_set_extensions_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/missing_enum_values_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/missing_enum_values_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/missing_enum_values_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/missing_enum_values_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_extensions_dynamic_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_extensions_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_extensions_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_extensions_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_extensions_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_messages_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_messages_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/more_messages_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/more_messages_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/no_package_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/no_package_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/no_package_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/no_package_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/python_message.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/python_message.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/python_message.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/python_message.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/type_checkers.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/type_checkers.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/type_checkers.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/type_checkers.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/well_known_types.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/well_known_types.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/well_known_types.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/well_known_types.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/wire_format.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/wire_format.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/internal/wire_format.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/internal/wire_format.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/json_format.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/json_format.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/json_format.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/json_format.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/message.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/message.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/message.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/message.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/message_factory.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/message_factory.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/message_factory.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/message_factory.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/proto_builder.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/proto_builder.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/proto_builder.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/proto_builder.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/cpp_message.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/cpp_message.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/cpp_message.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/cpp_message.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/python_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/python_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/pyext/python_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/pyext/python_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/reflection.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/reflection.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/reflection.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/reflection.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/service.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/service.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/service.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/service.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/service_reflection.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/service_reflection.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/service_reflection.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/service_reflection.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/source_context_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/source_context_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/source_context_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/source_context_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/struct_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/struct_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/struct_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/struct_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/symbol_database.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/symbol_database.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/symbol_database.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/symbol_database.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/text_encoding.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/text_encoding.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/text_encoding.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/text_encoding.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/text_format.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/text_format.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/text_format.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/text_format.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/timestamp_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/timestamp_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/timestamp_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/timestamp_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/type_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/type_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/type_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/type_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/util/__init__.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/__init__.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/util/__init__.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/__init__.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/util/json_format_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/json_format_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/util/json_format_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/json_format_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/util/json_format_proto3_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/json_format_proto3_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/util/json_format_proto3_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/util/json_format_proto3_pb2.py diff --git a/client/ayon_core/hosts/nuke/vendor/google/protobuf/wrappers_pb2.py b/server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/wrappers_pb2.py similarity index 100% rename from client/ayon_core/hosts/nuke/vendor/google/protobuf/wrappers_pb2.py rename to server_addon/nuke/client/ayon_nuke/vendor/google/protobuf/wrappers_pb2.py From 6e0491af06fdb1ac28f9b7162979bd15ce6f32dd Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Mon, 27 May 2024 20:45:55 +0800 Subject: [PATCH 88/94] add options to read the deepexr file --- .../hosts/nuke/plugins/load/load_clip.py | 33 ++++++++++++++----- server_addon/nuke/package.py | 2 +- .../nuke/server/settings/loader_plugins.py | 7 ++-- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/client/ayon_core/hosts/nuke/plugins/load/load_clip.py b/client/ayon_core/hosts/nuke/plugins/load/load_clip.py index 7fa90da86f..23d8c4ae85 100644 --- a/client/ayon_core/hosts/nuke/plugins/load/load_clip.py +++ b/client/ayon_core/hosts/nuke/plugins/load/load_clip.py @@ -61,7 +61,8 @@ class LoadClip(plugin.NukeLoader): # option gui options_defaults = { "start_at_workfile": True, - "add_retime": True + "add_retime": True, + "deep_exr": False } node_name_template = "{class_name}_{ext}" @@ -78,6 +79,11 @@ class LoadClip(plugin.NukeLoader): "add_retime", help="Load with retime", default=cls.options_defaults["add_retime"] + ), + qargparse.Boolean( + "deep_exr", + help="Read with deep exr", + default=cls.options_defaults["deep_exr"] ) ] @@ -113,6 +119,9 @@ class LoadClip(plugin.NukeLoader): add_retime = options.get( "add_retime", self.options_defaults["add_retime"]) + deep_exr = options.get( + "deep_exr", self.options_defaults["deep_exr"]) + repre_id = repre_entity["id"] self.log.debug( @@ -153,13 +162,21 @@ class LoadClip(plugin.NukeLoader): return read_name = self._get_node_name(context) - - # Create the Loader with the filename path set - read_node = nuke.createNode( - "Read", - "name {}".format(read_name), - inpanel=False - ) + read_node = None + if deep_exr: + # Create the Loader with the filename path set + read_node = nuke.createNode( + "DeepRead", + "name {}".format(read_name), + inpanel=False + ) + else: + # Create the Loader with the filename path set + read_node = nuke.createNode( + "Read", + "name {}".format(read_name), + inpanel=False + ) # get colorspace colorspace = ( diff --git a/server_addon/nuke/package.py b/server_addon/nuke/package.py index d8decef208..e6f3a0bd44 100644 --- a/server_addon/nuke/package.py +++ b/server_addon/nuke/package.py @@ -1,3 +1,3 @@ name = "nuke" title = "Nuke" -version = "0.1.14" +version = "0.1.15" diff --git a/server_addon/nuke/server/settings/loader_plugins.py b/server_addon/nuke/server/settings/loader_plugins.py index 531ea8d986..22cb469e8d 100644 --- a/server_addon/nuke/server/settings/loader_plugins.py +++ b/server_addon/nuke/server/settings/loader_plugins.py @@ -22,7 +22,9 @@ class LoadClipOptionsModel(BaseSettingsModel): add_retime: bool = SettingsField( title="Add retime" ) - + deep_exr: bool = SettingsField( + title="Deep Exr Read Node" + ) class LoadClipModel(BaseSettingsModel): enabled: bool = SettingsField( @@ -65,7 +67,8 @@ DEFAULT_LOADER_PLUGINS_SETTINGS = { "node_name_template": "{class_name}_{ext}", "options_defaults": { "start_at_workfile": True, - "add_retime": True + "add_retime": True, + "deep_exr": False } } } From f18f50ad9cd383cf6c0236bbbd69e28cebf47e9a Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 14:49:02 +0200 Subject: [PATCH 89/94] Add settings category "nuke" to various plugins for consistency. - Added a common settings category "nuke" to multiple plugin files. --- .../client/ayon_nuke/plugins/create/create_backdrop.py | 2 ++ .../client/ayon_nuke/plugins/create/create_camera.py | 2 ++ .../nuke/client/ayon_nuke/plugins/create/create_gizmo.py | 2 ++ .../nuke/client/ayon_nuke/plugins/create/create_model.py | 2 ++ .../client/ayon_nuke/plugins/create/create_source.py | 2 ++ .../ayon_nuke/plugins/create/create_write_image.py | 3 +++ .../ayon_nuke/plugins/create/create_write_prerender.py | 3 +++ .../ayon_nuke/plugins/create/create_write_render.py | 3 +++ .../client/ayon_nuke/plugins/create/workfile_creator.py | 3 +++ .../nuke/client/ayon_nuke/plugins/load/load_backdrop.py | 2 ++ .../client/ayon_nuke/plugins/load/load_camera_abc.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_clip.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_effects.py | 3 ++- .../client/ayon_nuke/plugins/load/load_effects_ip.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_gizmo.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_image.py | 6 +++--- .../nuke/client/ayon_nuke/plugins/load/load_matchmove.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_model.py | 2 ++ .../nuke/client/ayon_nuke/plugins/load/load_ociolook.py | 2 ++ .../client/ayon_nuke/plugins/load/load_script_precomp.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_backdrop.py | 2 ++ .../ayon_nuke/plugins/publish/collect_context_data.py | 2 ++ .../ayon_nuke/plugins/publish/collect_framerate.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_gizmo.py | 2 ++ .../ayon_nuke/plugins/publish/collect_headless_farm.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_model.py | 2 ++ .../plugins/publish/collect_nuke_instance_data.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_reads.py | 2 ++ .../ayon_nuke/plugins/publish/collect_slate_node.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_workfile.py | 2 ++ .../client/ayon_nuke/plugins/publish/collect_writes.py | 2 ++ .../client/ayon_nuke/plugins/publish/extract_backdrop.py | 2 ++ .../client/ayon_nuke/plugins/publish/extract_camera.py | 2 ++ .../client/ayon_nuke/plugins/publish/extract_gizmo.py | 2 ++ .../ayon_nuke/plugins/publish/extract_headless_farm.py | 2 ++ .../client/ayon_nuke/plugins/publish/extract_model.py | 2 ++ .../ayon_nuke/plugins/publish/extract_ouput_node.py | 4 +++- .../plugins/publish/extract_output_directory.py | 2 +- .../ayon_nuke/plugins/publish/extract_render_local.py | 2 ++ .../ayon_nuke/plugins/publish/extract_review_data.py | 2 ++ .../ayon_nuke/plugins/publish/extract_review_data_lut.py | 2 ++ .../plugins/publish/extract_review_intermediates.py | 2 ++ .../ayon_nuke/plugins/publish/extract_script_save.py | 4 +++- .../ayon_nuke/plugins/publish/extract_slate_frame.py | 2 ++ .../plugins/publish/increment_script_version.py | 5 +++-- .../ayon_nuke/plugins/publish/remove_ouput_node.py | 4 +++- .../ayon_nuke/plugins/publish/validate_asset_context.py | 2 ++ .../ayon_nuke/plugins/publish/validate_backdrop.py | 2 ++ .../ayon_nuke/plugins/publish/validate_exposed_knobs.py | 3 +++ .../client/ayon_nuke/plugins/publish/validate_gizmo.py | 2 ++ .../client/ayon_nuke/plugins/publish/validate_knobs.py | 2 ++ .../plugins/publish/validate_output_resolution.py | 2 ++ .../ayon_nuke/plugins/publish/validate_proxy_mode.py | 2 ++ .../plugins/publish/validate_rendered_frames.py | 2 ++ .../plugins/publish/validate_script_attributes.py | 2 ++ .../ayon_nuke/plugins/publish/validate_write_nodes.py | 2 ++ server_addon/nuke/package.py | 9 ++++++++- 58 files changed, 131 insertions(+), 11 deletions(-) diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py index 6d50b066d7..f97b9efeb6 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_backdrop.py @@ -10,6 +10,8 @@ from ayon_nuke.api import ( class CreateBackdrop(NukeCreator): """Add Publishable Backdrop""" + settings_category = "nuke" + identifier = "create_backdrop" label = "Nukenodes (backdrop)" product_type = "nukenodes" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py index acf7448232..69e5b9c676 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_camera.py @@ -12,6 +12,8 @@ from ayon_nuke.api.lib import ( class CreateCamera(NukeCreator): """Add Publishable Camera""" + settings_category = "nuke" + identifier = "create_camera" label = "Camera (3d)" product_type = "camera" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py index cc1c4edf82..6be7cd58db 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_gizmo.py @@ -9,6 +9,8 @@ from ayon_nuke.api import ( class CreateGizmo(NukeCreator): """Add Publishable Group as gizmo""" + settings_category = "nuke" + identifier = "create_gizmo" label = "Gizmo (group)" product_type = "gizmo" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py index 6c1bf612b9..b7d7b740c2 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_model.py @@ -9,6 +9,8 @@ from ayon_nuke.api import ( class CreateModel(NukeCreator): """Add Publishable Camera""" + settings_category = "nuke" + identifier = "create_model" label = "Model (3d)" product_type = "model" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py index b2a21f032d..1579cebb1d 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_source.py @@ -15,6 +15,8 @@ from ayon_core.pipeline import ( class CreateSource(NukeCreator): """Add Publishable Read with source""" + settings_category = "nuke" + identifier = "create_source" label = "Source (read)" product_type = "source" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py index 43f9d4c207..11f574732a 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py @@ -16,6 +16,9 @@ from ayon_nuke.api.plugin import exposed_write_knobs class CreateWriteImage(napi.NukeWriteCreator): + + settings_category = "nuke" + identifier = "create_write_image" label = "Image (write)" product_type = "image" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py index 91b0022c86..c18217c4c5 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py @@ -13,6 +13,9 @@ from ayon_nuke.api.plugin import exposed_write_knobs class CreateWritePrerender(napi.NukeWriteCreator): + + settings_category = "nuke" + identifier = "create_write_prerender" label = "Prerender (write)" product_type = "prerender" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py index 85a09d65b7..8ff9b2b15e 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py @@ -13,6 +13,9 @@ from ayon_nuke.api.plugin import exposed_write_knobs class CreateWriteRender(napi.NukeWriteCreator): + + settings_category = "nuke" + identifier = "create_write_render" label = "Render (write)" product_type = "render" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py b/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py index c49ca1f502..463d898224 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/workfile_creator.py @@ -13,6 +13,9 @@ import nuke class WorkfileCreator(AutoCreator): + + settings_category = "nuke" + identifier = "workfile" product_type = "workfile" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py index f21920cdd2..054a56d041 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_backdrop.py @@ -25,6 +25,8 @@ class LoadBackdropNodes(load.LoaderPlugin): representations = {"*"} extensions = {"nk"} + settings_category = "nuke" + label = "Import Nuke Nodes" order = 0 icon = "eye" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py index a1e0eb0ecc..3930cf52fa 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_camera_abc.py @@ -24,6 +24,8 @@ class AlembicCameraLoader(load.LoaderPlugin): representations = {"*"} extensions = {"abc"} + settings_category = "nuke" + label = "Load Alembic Camera" icon = "camera" color = "orange" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py index cc2e7359b9..8be1c7d109 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_clip.py @@ -48,6 +48,8 @@ class LoadClip(plugin.NukeLoader): ext.lstrip(".") for ext in IMAGE_EXTENSIONS.union(VIDEO_EXTENSIONS) ) + settings_category = "nuke" + label = "Load Clip" order = -20 icon = "file-video-o" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py index ea397a6ae3..e923a02424 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects.py @@ -22,13 +22,14 @@ class LoadEffects(load.LoaderPlugin): representations = {"*"} extensions = {"json"} + settings_category = "nuke" + label = "Load Effects - nodes" order = 0 icon = "cc" color = "white" ignore_attr = ["useLifetime"] - def load(self, context, name, namespace, data): """ Loading function to get the soft effects to particular read node diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py index 3ced3fb4f0..ce7e7debeb 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_effects_ip.py @@ -23,6 +23,8 @@ class LoadEffectsInputProcess(load.LoaderPlugin): representations = {"*"} extensions = {"json"} + settings_category = "nuke" + label = "Load Effects - Input Process" order = 0 icon = "eye" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py index b3822e9de2..1c91af0c1c 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo.py @@ -25,6 +25,8 @@ class LoadGizmo(load.LoaderPlugin): representations = {"*"} extensions = {"nk"} + settings_category = "nuke" + label = "Load Gizmo" order = 0 icon = "dropbox" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py index 2fb3201108..36e878fdf1 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_gizmo_ip.py @@ -27,6 +27,8 @@ class LoadGizmoInputProcess(load.LoaderPlugin): representations = {"*"} extensions = {"nk"} + settings_category = "nuke" + label = "Load Gizmo - Input Process" order = 0 icon = "eye" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py index b98668d983..0c43f5a5ca 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_image.py @@ -33,9 +33,9 @@ class LoadImage(load.LoaderPlugin): "image", } representations = {"*"} - extensions = set( - ext.lstrip(".") for ext in IMAGE_EXTENSIONS - ) + extensions = set(ext.lstrip(".") for ext in IMAGE_EXTENSIONS) + + settings_category = "nuke" label = "Load Image" order = -10 diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py index beebd0458f..c1b5a24504 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_matchmove.py @@ -11,6 +11,8 @@ class MatchmoveLoader(load.LoaderPlugin): representations = {"*"} extensions = {"py"} + settings_category = "nuke" + defaults = ["Camera", "Object"] label = "Run matchmove script" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py index 2d509775f5..551147be96 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_model.py @@ -22,6 +22,8 @@ class AlembicModelLoader(load.LoaderPlugin): representations = {"*"} extensions = {"abc"} + settings_category = "nuke" + label = "Load Alembic" icon = "cube" color = "orange" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py index 9210e83d6a..bdff8d7e28 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_ociolook.py @@ -24,6 +24,8 @@ class LoadOcioLookNodes(load.LoaderPlugin): representations = {"*"} extensions = {"json"} + settings_category = "nuke" + label = "Load OcioLook [nodes]" order = 0 icon = "cc" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py b/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py index e68ae2651b..cf543dabfd 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/load/load_script_precomp.py @@ -20,6 +20,8 @@ class LinkAsGroup(load.LoaderPlugin): representations = {"*"} extensions = {"nk"} + settings_category = "nuke" + label = "Load Precomp" order = 0 icon = "file" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py index 89136fa52b..1471159380 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_backdrop.py @@ -13,6 +13,8 @@ class CollectBackdrops(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["nukenodes"] + settings_category = "nuke" + def process(self, instance): self.log.debug(pformat(instance.data)) diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py index 0a5f1563d6..33c8e63e82 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_context_data.py @@ -13,6 +13,8 @@ class CollectContextData(pyblish.api.ContextPlugin): label = "Collect context data" hosts = ['nuke'] + settings_category = "nuke" + def process(self, context): # sourcery skip: avoid-builtin-shadow root_node = nuke.root() diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py index 88a449e745..cd77eab0f1 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_framerate.py @@ -13,5 +13,7 @@ class CollectFramerate(pyblish.api.ContextPlugin): "nukeassist" ] + settings_category = "nuke" + def process(self, context): context.data["fps"] = nuke.root()["fps"].getValue() diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py index fda1c7ac31..ece9823b37 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_gizmo.py @@ -11,6 +11,8 @@ class CollectGizmo(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["gizmo"] + settings_category = "nuke" + def process(self, instance): gizmo_node = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py index 3f49a2bf01..c00b9a8f5d 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_headless_farm.py @@ -13,6 +13,8 @@ class CollectRenderOnFarm(pyblish.api.ContextPlugin): label = "Collect Render On Farm" hosts = ["nuke"] + settings_category = "nuke" + def process(self, context): if not context.data.get("render_on_farm", False): return diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py index 1a2bc9c019..f4266bbbcb 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_model.py @@ -11,6 +11,8 @@ class CollectModel(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["model"] + settings_category = "nuke" + def process(self, instance): geo_node = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py index 951072ff3f..d1392a8460 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_nuke_instance_data.py @@ -11,6 +11,8 @@ class CollectInstanceData(pyblish.api.InstancePlugin): label = "Collect Nuke Instance Data" hosts = ["nuke", "nukeassist"] + settings_category = "nuke" + # presets sync_workfile_version_on_families = [] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py index af17933eb1..439374e825 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_reads.py @@ -12,6 +12,8 @@ class CollectNukeReads(pyblish.api.InstancePlugin): hosts = ["nuke", "nukeassist"] families = ["source"] + settings_category = "nuke" + def process(self, instance): self.log.debug("checking instance: {}".format(instance)) diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py index ac30bd6051..bb3b0083ab 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_slate_node.py @@ -10,6 +10,8 @@ class CollectSlate(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["render"] + settings_category = "nuke" + def process(self, instance): node = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py index 0f03572f8b..e4bd5ed129 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_workfile.py @@ -11,6 +11,8 @@ class CollectWorkfile(pyblish.api.InstancePlugin): hosts = ['nuke'] families = ["workfile"] + settings_category = "nuke" + def process(self, instance): # sourcery skip: avoid-builtin-shadow script_data = instance.context.data["scriptData"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py index 27525bcad1..c90f335d07 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py @@ -14,6 +14,8 @@ class CollectNukeWrites(pyblish.api.InstancePlugin, hosts = ["nuke", "nukeassist"] families = ["render", "prerender", "image"] + settings_category = "nuke" + # cache _write_nodes = {} _frame_ranges = {} diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py index ec9e664a7c..8c42920979 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_backdrop.py @@ -25,6 +25,8 @@ class ExtractBackdropNode(publish.Extractor): hosts = ["nuke"] families = ["nukenodes"] + settings_category = "nuke" + def process(self, instance): tmp_nodes = [] child_nodes = instance.data["transientData"]["childNodes"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py index dfb4b04f9a..83914087e3 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_camera.py @@ -17,6 +17,8 @@ class ExtractCamera(publish.Extractor): families = ["camera"] hosts = ["nuke"] + settings_category = "nuke" + # presets write_geo_knobs = [ ("file_type", "abc"), diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py index 3a8d418ff3..05e3164163 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_gizmo.py @@ -23,6 +23,8 @@ class ExtractGizmo(publish.Extractor): hosts = ["nuke"] families = ["gizmo"] + settings_category = "nuke" + def process(self, instance): tmp_nodes = [] orig_grpn = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py index 4ba55f8c46..4721fe4462 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_headless_farm.py @@ -15,6 +15,8 @@ class ExtractRenderOnFarm(pyblish.api.InstancePlugin): hosts = ["nuke"] families = ["render_on_farm"] + settings_category = "nuke" + def process(self, instance): if not instance.context.data.get("render_on_farm", False): return diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py index fce47714a4..58b9d4179b 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_model.py @@ -18,6 +18,8 @@ class ExtractModel(publish.Extractor): families = ["model"] hosts = ["nuke"] + settings_category = "nuke" + # presets write_geo_knobs = [ ("file_type", "abc"), diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py index c0e5c4334e..52072cddc5 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_ouput_node.py @@ -11,7 +11,9 @@ class CreateOutputNode(pyblish.api.ContextPlugin): label = 'Output Node Create' order = pyblish.api.ExtractorOrder + 0.4 families = ["workfile"] - hosts = ['nuke'] + hosts = ["nuke"] + + settings_category = "nuke" def process(self, context): # capture selection state diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py index d999d200de..45156ca9ae 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_output_directory.py @@ -10,7 +10,7 @@ class ExtractOutputDirectory(pyblish.api.InstancePlugin): label = "Output Directory" optional = True - # targets = ["process"] + settings_category = "nuke" def process(self, instance): diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py index c8be2a5564..55a2beea81 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py @@ -25,6 +25,8 @@ class NukeRenderLocal(publish.Extractor, hosts = ["nuke"] families = ["render.local", "prerender.local", "image.local"] + settings_category = "nuke" + def process(self, instance): child_nodes = ( instance.data.get("transientData", {}).get("childNodes") diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py index 258a019319..856616898b 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data.py @@ -16,6 +16,8 @@ class ExtractReviewData(publish.Extractor): families = ["review"] hosts = ["nuke"] + settings_category = "nuke" + def process(self, instance): fpath = instance.data["path"] ext = os.path.splitext(fpath)[-1][1:] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py index 808ba9d8a7..d3377807ea 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_data_lut.py @@ -19,6 +19,8 @@ class ExtractReviewDataLut(publish.Extractor): families = ["review"] hosts = ["nuke"] + settings_category = "nuke" + def process(self, instance): self.log.debug("Creating staging dir...") if "representations" in instance.data: diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py index 99e02536a4..c12d14adf4 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_review_intermediates.py @@ -22,6 +22,8 @@ class ExtractReviewIntermediates(publish.Extractor): families = ["review"] hosts = ["nuke"] + settings_category = "nuke" + # presets viewer_lut_raw = None outputs = {} diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py index d325684a7c..ea584b6529 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_script_save.py @@ -6,7 +6,9 @@ class ExtractScriptSave(pyblish.api.InstancePlugin): """Save current Nuke workfile script""" label = 'Script Save' order = pyblish.api.ExtractorOrder - 0.1 - hosts = ['nuke'] + hosts = ["nuke"] + + settings_category = "nuke" def process(self, instance): diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py index ff01779208..47750ea637 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_slate_frame.py @@ -27,6 +27,8 @@ class ExtractSlateFrame(publish.Extractor): families = ["slate"] hosts = ["nuke"] + settings_category = "nuke" + # Settings values key_value_mapping = { "f_submission_note": { diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py index 70fd04a985..36659aa2d2 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/increment_script_version.py @@ -1,4 +1,3 @@ - import nuke import pyblish.api @@ -10,7 +9,9 @@ class IncrementScriptVersion(pyblish.api.ContextPlugin): label = "Increment Script Version" optional = True families = ["workfile"] - hosts = ['nuke'] + hosts = ["nuke"] + + settings_category = "nuke" def process(self, context): if not context.data.get("increment_script_version", True): diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py index fb77e8638c..4c17cb5f56 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/remove_ouput_node.py @@ -9,7 +9,9 @@ class RemoveOutputNode(pyblish.api.ContextPlugin): label = 'Output Node Remove' order = pyblish.api.IntegratorOrder + 0.4 families = ["workfile"] - hosts = ['nuke'] + hosts = ["nuke"] + + settings_category = "nuke" def process(self, context): try: diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py index f747732cbf..903648fd1b 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_asset_context.py @@ -34,6 +34,8 @@ class ValidateCorrectAssetContext( ] optional = True + settings_category = "nuke" + @classmethod def apply_settings(cls, project_settings): """Apply deprecated settings from project settings. diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py index 22344c661e..133dc6ec93 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py @@ -65,6 +65,8 @@ class ValidateBackdrop( hosts = ["nuke"] actions = [SelectCenterInNodeGraph] + settings_category = "nuke" + def process(self, instance): if not self.is_active(instance.data): return diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py index 7ff13bca30..d1b7c146fb 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_exposed_knobs.py @@ -52,6 +52,9 @@ class ValidateExposedKnobs( label = "Validate Exposed Knobs" actions = [RepairExposedKnobs] hosts = ["nuke"] + + settings_category = "nuke" + product_types_mapping = { "render": "CreateWriteRender", "prerender": "CreateWritePrerender", diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py index 2cdcb90d70..3804efc9ae 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py @@ -43,6 +43,8 @@ class ValidateGizmo(pyblish.api.InstancePlugin): hosts = ["nuke"] actions = [OpenFailedGroupNode] + settings_category = "nuke" + def process(self, instance): grpn = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py index 8bcde9609d..ea03bd94b2 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_knobs.py @@ -32,6 +32,8 @@ class ValidateKnobs(pyblish.api.ContextPlugin): actions = [RepairContextAction] optional = True + settings_category = "nuke" + knobs = "{}" def process(self, context): diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py index e8a00d2294..c7a6f7d47c 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py @@ -27,6 +27,8 @@ class ValidateOutputResolution( hosts = ["nuke"] actions = [RepairAction] + settings_category = "nuke" + missing_msg = "Missing Reformat node in render group node" resolution_msg = "Reformat is set to wrong format" diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py index 26e54295c9..1eb858b17e 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_proxy_mode.py @@ -25,6 +25,8 @@ class ValidateProxyMode(pyblish.api.ContextPlugin): hosts = ["nuke"] actions = [FixProxyMode] + settings_category = "nuke" + def process(self, context): rootNode = nuke.root() diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py index 76ac7e97ad..20b7f6a6ac 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_rendered_frames.py @@ -54,6 +54,8 @@ class ValidateRenderedFrames(pyblish.api.InstancePlugin): hosts = ["nuke", "nukestudio"] actions = [RepairCollectionActionToLocal, RepairCollectionActionToFarm] + settings_category = "nuke" + def process(self, instance): node = instance.data["transientData"]["node"] diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py index 15a586580e..617d8d835b 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_script_attributes.py @@ -23,6 +23,8 @@ class ValidateScriptAttributes( optional = True actions = [RepairAction] + settings_category = "nuke" + def process(self, instance): if not self.is_active(instance.data): return diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py index 6a76bf06d1..d642a4314c 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_write_nodes.py @@ -59,6 +59,8 @@ class ValidateNukeWriteNode( actions = [RepairNukeWriteNodeAction] hosts = ["nuke"] + settings_category = "nuke" + def process(self, instance): if not self.is_active(instance.data): return diff --git a/server_addon/nuke/package.py b/server_addon/nuke/package.py index d8decef208..af36e61cef 100644 --- a/server_addon/nuke/package.py +++ b/server_addon/nuke/package.py @@ -1,3 +1,10 @@ name = "nuke" title = "Nuke" -version = "0.1.14" +version = "0.2.0" + +client_dir = "ayon_nuke" + +ayon_required_addons = { + "core": ">0.3.2", +} +ayon_compatible_addons = {} From 18b7e6ec9e0e8b21a3926e15f8575e04aae004d0 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 15:08:54 +0200 Subject: [PATCH 90/94] Add new version info for "nuke" addon. - Update the MOVED_ADDON_MILESTONE_VERSIONS dictionary to include the "nuke" addon with version 0.2.0. --- client/ayon_core/addon/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py index dba25510be..64627ef32e 100644 --- a/client/ayon_core/addon/base.py +++ b/client/ayon_core/addon/base.py @@ -54,6 +54,7 @@ MOVED_ADDON_MILESTONE_VERSIONS = { "clockify": VersionInfo(0, 2, 0), "traypublisher": VersionInfo(0, 2, 0), "tvpaint": VersionInfo(0, 2, 0), + "nuke": VersionInfo(0, 2, 0), } # Inherit from `object` for Python 2 hosts From ca29fe77c7ec1939b863cbdb5f916f381ecfbbf5 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 15:13:25 +0200 Subject: [PATCH 91/94] add line --- client/ayon_core/addon/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py index 64627ef32e..939fab68b8 100644 --- a/client/ayon_core/addon/base.py +++ b/client/ayon_core/addon/base.py @@ -57,6 +57,7 @@ MOVED_ADDON_MILESTONE_VERSIONS = { "nuke": VersionInfo(0, 2, 0), } + # Inherit from `object` for Python 2 hosts class _ModuleClass(object): """Fake module class for storing AYON addons. From 007d4a453d2a69d143cf574db837a3f32ae930fb Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 27 May 2024 15:24:14 +0200 Subject: [PATCH 92/94] import statements to use the correct module path for Nuke host API. --- server_addon/nuke/client/ayon_nuke/api/pipeline.py | 2 +- .../nuke/client/ayon_nuke/plugins/create/create_write_image.py | 2 +- .../client/ayon_nuke/plugins/create/create_write_prerender.py | 2 +- .../nuke/client/ayon_nuke/plugins/create/create_write_render.py | 2 +- .../nuke/client/ayon_nuke/plugins/publish/collect_writes.py | 2 +- .../client/ayon_nuke/plugins/publish/extract_render_local.py | 2 +- .../nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py | 2 +- .../nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py | 2 +- .../ayon_nuke/plugins/publish/validate_output_resolution.py | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/server_addon/nuke/client/ayon_nuke/api/pipeline.py b/server_addon/nuke/client/ayon_nuke/api/pipeline.py index 0425dd20d4..ad8e17b1f6 100644 --- a/server_addon/nuke/client/ayon_nuke/api/pipeline.py +++ b/server_addon/nuke/client/ayon_nuke/api/pipeline.py @@ -28,7 +28,7 @@ from ayon_core.pipeline import ( ) from ayon_core.pipeline.workfile import BuildWorkfile from ayon_core.tools.utils import host_tools -from ayon_core.hosts.nuke import NUKE_ROOT_DIR +from ayon_nuke import NUKE_ROOT_DIR from ayon_core.tools.workfile_template_build import open_template_ui from .lib import ( diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py index 11f574732a..2268817e76 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_image.py @@ -11,7 +11,7 @@ from ayon_core.lib import ( UISeparatorDef, EnumDef ) -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_nuke.api.plugin import exposed_write_knobs diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py index c18217c4c5..014e91e81c 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_prerender.py @@ -8,7 +8,7 @@ from ayon_core.pipeline import ( from ayon_core.lib import ( BoolDef ) -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_nuke.api.plugin import exposed_write_knobs diff --git a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py index 8ff9b2b15e..bed081c882 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/create/create_write_render.py @@ -8,7 +8,7 @@ from ayon_core.pipeline import ( from ayon_core.lib import ( BoolDef ) -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_nuke.api.plugin import exposed_write_knobs diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py index c90f335d07..816f493d72 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/collect_writes.py @@ -1,7 +1,7 @@ import os import nuke import pyblish.api -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_core.pipeline import publish diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py index 55a2beea81..c865684e7a 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/extract_render_local.py @@ -4,7 +4,7 @@ import shutil import pyblish.api import clique import nuke -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_core.pipeline import publish from ayon_core.lib import collect_frames diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py index 133dc6ec93..f7b94e0c82 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_backdrop.py @@ -1,6 +1,6 @@ import nuke import pyblish -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_core.pipeline.publish import ( ValidateContentsOrder, diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py index 3804efc9ae..55249ae931 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_gizmo.py @@ -1,6 +1,6 @@ import pyblish from ayon_core.pipeline import PublishXmlValidationError -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi import nuke diff --git a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py index c7a6f7d47c..440cb8b758 100644 --- a/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py +++ b/server_addon/nuke/client/ayon_nuke/plugins/publish/validate_output_resolution.py @@ -1,6 +1,6 @@ import pyblish.api -from ayon_core.hosts.nuke import api as napi +from ayon_nuke import api as napi from ayon_core.pipeline.publish import RepairAction from ayon_core.pipeline import ( PublishXmlValidationError, From 45fc7f02d1e170f38249541d6dba77b519980884 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 27 May 2024 15:38:06 +0200 Subject: [PATCH 93/94] fix support for PySide6 in loader --- client/ayon_core/tools/loader/ui/products_delegates.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/products_delegates.py b/client/ayon_core/tools/loader/ui/products_delegates.py index 6bcb78ec66..51424034aa 100644 --- a/client/ayon_core/tools/loader/ui/products_delegates.py +++ b/client/ayon_core/tools/loader/ui/products_delegates.py @@ -107,7 +107,10 @@ class VersionDelegate(QtWidgets.QStyledItemDelegate): style = QtWidgets.QApplication.style() style.drawControl( - style.CE_ItemViewItem, option, painter, option.widget + QtWidgets.QCommonStyle.CE_ItemViewItem, + option, + painter, + option.widget ) painter.save() @@ -207,7 +210,10 @@ class StatusDelegate(QtWidgets.QStyledItemDelegate): style = QtWidgets.QApplication.style() style.drawControl( - style.CE_ItemViewItem, option, painter, option.widget + QtWidgets.QCommonStyle.CE_ItemViewItem, + option, + painter, + option.widget ) painter.save() From afe0887d96e686937d3e1dca4acdaf7163eb11bf Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 27 May 2024 15:45:53 +0200 Subject: [PATCH 94/94] fix more constants --- .../tools/loader/ui/products_delegates.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/client/ayon_core/tools/loader/ui/products_delegates.py b/client/ayon_core/tools/loader/ui/products_delegates.py index 51424034aa..1ac19b53eb 100644 --- a/client/ayon_core/tools/loader/ui/products_delegates.py +++ b/client/ayon_core/tools/loader/ui/products_delegates.py @@ -122,9 +122,14 @@ class VersionDelegate(QtWidgets.QStyledItemDelegate): pen.setColor(fg_color) painter.setPen(pen) - text_rect = style.subElementRect(style.SE_ItemViewItemText, option) + text_rect = style.subElementRect( + QtWidgets.QCommonStyle.SE_ItemViewItemText, + option + ) text_margin = style.proxy().pixelMetric( - style.PM_FocusFrameHMargin, option, option.widget + QtWidgets.QCommonStyle.PM_FocusFrameHMargin, + option, + option.widget ) + 1 painter.drawText( @@ -218,9 +223,14 @@ class StatusDelegate(QtWidgets.QStyledItemDelegate): painter.save() - text_rect = style.subElementRect(style.SE_ItemViewItemText, option) + text_rect = style.subElementRect( + QtWidgets.QCommonStyle.SE_ItemViewItemText, + option + ) text_margin = style.proxy().pixelMetric( - style.PM_FocusFrameHMargin, option, option.widget + QtWidgets.QCommonStyle.PM_FocusFrameHMargin, + option, + option.widget ) + 1 padded_text_rect = text_rect.adjusted( text_margin, 0, - text_margin, 0