diff --git a/openpype/hosts/nuke/api/plugin.py b/openpype/hosts/nuke/api/plugin.py index a1cf5ac328..d3f8357f7d 100644 --- a/openpype/hosts/nuke/api/plugin.py +++ b/openpype/hosts/nuke/api/plugin.py @@ -89,9 +89,17 @@ class NukeCreator(NewCreator): """) node.addKnob(info_knob) - def check_existing_subset(self, subset_name, instance_data): - """Check if existing subset name already exists.""" - exists = False + def check_existing_subset(self, subset_name): + """Make sure subset name is unique. + + It search within all nodes recursively + and checks if subset name is found in + any node having instance data knob. + + Arguments: + subset_name (str): Subset name + """ + for node in nuke.allNodes(recurseGroups=True): # make sure testing node is having instance knob if INSTANCE_DATA_KNOB not in node.knobs().keys(): @@ -104,9 +112,13 @@ class NukeCreator(NewCreator): # test if subset name is matching if node_data.get("subset") == subset_name: - exists = True - - return exists + raise NukeCreatorError( + ( + "A publish instance for '{}' already exists " + "in nodes! Please change the variant " + "name to ensure unique output." + ).format(subset_name) + ) def create_instance_node( self, @@ -165,10 +177,7 @@ class NukeCreator(NewCreator): self.set_selected_nodes(pre_create_data) # make sure subset name is unique - if self.check_existing_subset(subset_name, instance_data): - raise NukeCreatorError( - ("subset {} is already published" - "definition.").format(subset_name)) + self.check_existing_subset(subset_name) try: instance_node = self.create_instance_node( @@ -318,10 +327,7 @@ class NukeWriteCreator(NukeCreator): self.set_selected_nodes(pre_create_data) # make sure subset name is unique - if self.check_existing_subset(subset_name, instance_data): - raise NukeCreatorError( - ("Subset '{}' is already created " - "in nodes! Change variant name!").format(subset_name)) + self.check_existing_subset(subset_name) instance_node = self.create_instance_node( subset_name, diff --git a/openpype/hosts/nuke/plugins/create/create_backdrop.py b/openpype/hosts/nuke/plugins/create/create_backdrop.py index db65b29998..efed1a1493 100644 --- a/openpype/hosts/nuke/plugins/create/create_backdrop.py +++ b/openpype/hosts/nuke/plugins/create/create_backdrop.py @@ -43,13 +43,8 @@ class CreateBackdrop(NukeCreator): return created_node def create(self, subset_name, instance_data, pre_create_data): - if self.check_existing_subset(subset_name, instance_data): - raise NukeCreatorError( - ( - "Subset '{}' is already created " - "in nodes! Change variant name!" - ).format(subset_name) - ) + # make sure subset name is unique + self.check_existing_subset(subset_name) instance = super(CreateBackdrop, self).create( subset_name, diff --git a/openpype/hosts/nuke/plugins/create/create_camera.py b/openpype/hosts/nuke/plugins/create/create_camera.py index 87d215d21b..5553645af6 100644 --- a/openpype/hosts/nuke/plugins/create/create_camera.py +++ b/openpype/hosts/nuke/plugins/create/create_camera.py @@ -44,13 +44,8 @@ class CreateCamera(NukeCreator): return created_node def create(self, subset_name, instance_data, pre_create_data): - if self.check_existing_subset(subset_name, instance_data): - raise NukeCreatorError( - ( - "Subset '{}' is already created " - "in nodes! Change variant name!" - ).format(subset_name) - ) + # make sure subset name is unique + self.check_existing_subset(subset_name) instance = super(CreateCamera, self).create( subset_name, diff --git a/openpype/hosts/nuke/plugins/create/create_gizmo.py b/openpype/hosts/nuke/plugins/create/create_gizmo.py index 221cad8fb5..e3ce70dd59 100644 --- a/openpype/hosts/nuke/plugins/create/create_gizmo.py +++ b/openpype/hosts/nuke/plugins/create/create_gizmo.py @@ -45,13 +45,8 @@ class CreateGizmo(NukeCreator): return created_node def create(self, subset_name, instance_data, pre_create_data): - if self.check_existing_subset(subset_name, instance_data): - raise NukeCreatorError( - ( - "Subset '{}' is already created " - "in nodes! Change variant name!" - ).format(subset_name) - ) + # make sure subset name is unique + self.check_existing_subset(subset_name) instance = super(CreateGizmo, self).create( subset_name, diff --git a/openpype/hosts/nuke/plugins/create/create_model.py b/openpype/hosts/nuke/plugins/create/create_model.py index ea27714095..08a53abca2 100644 --- a/openpype/hosts/nuke/plugins/create/create_model.py +++ b/openpype/hosts/nuke/plugins/create/create_model.py @@ -45,13 +45,8 @@ class CreateModel(NukeCreator): return created_node def create(self, subset_name, instance_data, pre_create_data): - if self.check_existing_subset(subset_name, instance_data): - raise NukeCreatorError( - ( - "Subset '{}' is already created " - "in nodes! Change variant name!" - ).format(subset_name) - ) + # make sure subset name is unique + self.check_existing_subset(subset_name) instance = super(CreateModel, self).create( subset_name, diff --git a/openpype/hosts/nuke/plugins/create/create_source.py b/openpype/hosts/nuke/plugins/create/create_source.py index b33d078bfe..06cf4e6cbf 100644 --- a/openpype/hosts/nuke/plugins/create/create_source.py +++ b/openpype/hosts/nuke/plugins/create/create_source.py @@ -49,13 +49,7 @@ class CreateSource(NukeCreator): _subset_name = subset_name + node_name # make sure subset name is unique - if self.check_existing_subset(_subset_name, instance_data): - raise NukeCreatorError( - ( - "Subset '{}' is already created " - "in nodes! Change variant name!" - ).format(subset_name) - ) + self.check_existing_subset(_subset_name) instance_node = self.create_instance_node( _subset_name, diff --git a/openpype/hosts/nuke/plugins/create/create_write_image.py b/openpype/hosts/nuke/plugins/create/create_write_image.py index db8f2c54db..1e23b3ad7f 100644 --- a/openpype/hosts/nuke/plugins/create/create_write_image.py +++ b/openpype/hosts/nuke/plugins/create/create_write_image.py @@ -118,13 +118,7 @@ class CreateWriteImage(napi.NukeWriteCreator): self.set_selected_nodes(pre_create_data) # make sure subset name is unique - if self.check_existing_subset(subset_name, instance_data): - raise napi.NukeCreatorError( - ( - "Subset '{}' is already created " - "in nodes! Change variant name!" - ).format(subset_name) - ) + self.check_existing_subset(subset_name) instance_node = self.create_instance_node( subset_name, diff --git a/openpype/hosts/nuke/plugins/create/create_write_prerender.py b/openpype/hosts/nuke/plugins/create/create_write_prerender.py index 25250c712c..a15f362dd1 100644 --- a/openpype/hosts/nuke/plugins/create/create_write_prerender.py +++ b/openpype/hosts/nuke/plugins/create/create_write_prerender.py @@ -133,13 +133,7 @@ class CreateWritePrerender(napi.NukeWriteCreator): self.set_selected_nodes(pre_create_data) # make sure subset name is unique - if self.check_existing_subset(subset_name, instance_data): - raise napi.NukeCreatorError( - ( - "Subset '{}' is already created " - "in nodes! Change variant name!" - ).format(subset_name) - ) + self.check_existing_subset(subset_name) instance_node = self.create_instance_node( subset_name, diff --git a/openpype/hosts/nuke/plugins/create/create_write_render.py b/openpype/hosts/nuke/plugins/create/create_write_render.py index f6bfd93a89..481d1d2201 100644 --- a/openpype/hosts/nuke/plugins/create/create_write_render.py +++ b/openpype/hosts/nuke/plugins/create/create_write_render.py @@ -122,13 +122,7 @@ class CreateWriteRender(napi.NukeWriteCreator): self.set_selected_nodes(pre_create_data) # make sure subset name is unique - if self.check_existing_subset(subset_name, instance_data): - raise napi.NukeCreatorError( - ( - "Subset '{}' is already created " - "in nodes! Change variant name!" - ).format(subset_name) - ) + self.check_existing_subset(subset_name) instance_node = self.create_instance_node( subset_name,