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"