diff --git a/openpype/modules/deadline/plugins/publish/submit_publish_job.py b/openpype/modules/deadline/plugins/publish/submit_publish_job.py index 71a609997f..acd47e3224 100644 --- a/openpype/modules/deadline/plugins/publish/submit_publish_job.py +++ b/openpype/modules/deadline/plugins/publish/submit_publish_job.py @@ -299,7 +299,7 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): deadline_publish_job_id = response.json()["_id"] return deadline_publish_job_id - + def _solve_families(self, instance, preview=False): families = instance.get("families") @@ -379,19 +379,24 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): This will result in one instance with two representations: `foo` and `xxx` """ - + do_not_add_review = False + if instance.data.get("review") is False: + self.log.debug("Instance has review explicitly disabled.") + do_not_add_review = True if isinstance(instance.data.get("expectedFiles")[0], dict): instances = create_instances_for_aov( instance, instance_skeleton_data, - self.aov_filter, self.skip_integration_repre_list) + self.aov_filter, self.skip_integration_repre_list, + do_not_add_review) else: representations = prepare_representations( instance_skeleton_data, instance.data.get("expectedFiles"), self.anatomy, self.aov_filter, - self.skip_integration_repre_list + self.skip_integration_repre_list, + do_not_add_review ) if "representations" not in instance_skeleton_data.keys(): diff --git a/openpype/modules/royalrender/plugins/publish/create_publish_royalrender_job.py b/openpype/modules/royalrender/plugins/publish/create_publish_royalrender_job.py index 3cc63db377..af5bdfd5e6 100644 --- a/openpype/modules/royalrender/plugins/publish/create_publish_royalrender_job.py +++ b/openpype/modules/royalrender/plugins/publish/create_publish_royalrender_job.py @@ -88,10 +88,16 @@ class CreatePublishRoyalRenderJob(InstancePlugin): families_transfer=self.families_transfer, instance_transfer=self.instance_transfer) + do_not_add_review = False + if instance.data.get("review") is False: + self.log.debug("Instance has review explicitly disabled.") + do_not_add_review = True + if isinstance(instance.data.get("expectedFiles")[0], dict): instances = create_instances_for_aov( instance, instance_skeleton_data, - self.aov_filter, self.skip_integration_repre_list) + self.aov_filter, self.skip_integration_repre_list, + do_not_add_review) else: representations = prepare_representations( @@ -99,7 +105,8 @@ class CreatePublishRoyalRenderJob(InstancePlugin): instance.data.get("expectedFiles"), self.anatomy, self.aov_filter, - self.skip_integration_repre_list + self.skip_integration_repre_list, + do_not_add_review ) if "representations" not in instance_skeleton_data.keys(): diff --git a/openpype/pipeline/farm/pyblish_functions.py b/openpype/pipeline/farm/pyblish_functions.py index dbba9f8a9a..be031b1fde 100644 --- a/openpype/pipeline/farm/pyblish_functions.py +++ b/openpype/pipeline/farm/pyblish_functions.py @@ -286,7 +286,8 @@ def _solve_families(families): def prepare_representations(instance, exp_files, anatomy, aov_filter, - skip_integration_repre_list): + skip_integration_repre_list, + do_not_add_review): """Create representations for file sequences. This will return representations of expected files if they are not @@ -299,7 +300,8 @@ def prepare_representations(instance, exp_files, anatomy, aov_filter, exp_files (list): list of expected files anatomy (Anatomy): aov_filter (dict): add review for specific aov names - skip_integration_repre_list (list): exclude specific extensions + skip_integration_repre_list (list): exclude specific extensions, + do_not_add_review (bool): explicitly skip review Returns: list of representations @@ -351,6 +353,7 @@ def prepare_representations(instance, exp_files, anatomy, aov_filter, if instance.get("slate"): frame_start -= 1 + preview = preview and not do_not_add_review rep = { "name": ext, "ext": ext, @@ -406,6 +409,7 @@ def prepare_representations(instance, exp_files, anatomy, aov_filter, preview = match_aov_pattern( host_name, aov_filter, remainder ) + preview = preview and not do_not_add_review if preview: rep.update({ "fps": instance.get("fps"), @@ -428,7 +432,8 @@ def prepare_representations(instance, exp_files, anatomy, aov_filter, def create_instances_for_aov(instance, skeleton, aov_filter, - skip_integration_repre_list): + skip_integration_repre_list, + do_not_add_review): """Create instances from AOVs. This will create new pyblish.api.Instances by going over expected @@ -437,6 +442,7 @@ def create_instances_for_aov(instance, skeleton, aov_filter, Args: instance (pyblish.api.Instance): Original instance. skeleton (dict): Skeleton instance data. + skip_integration_repre_list (list): skip Returns: list of pyblish.api.Instance: Instances created from @@ -481,12 +487,13 @@ def create_instances_for_aov(instance, skeleton, aov_filter, skeleton, aov_filter, additional_color_data, - skip_integration_repre_list + skip_integration_repre_list, + do_not_add_review ) def _create_instances_for_aov(instance, skeleton, aov_filter, additional_data, - skip_integration_repre_list): + skip_integration_repre_list, do_not_add_review): """Create instance for each AOV found. This will create new instance for every AOV it can detect in expected @@ -496,7 +503,10 @@ def _create_instances_for_aov(instance, skeleton, aov_filter, additional_data, instance (pyblish.api.Instance): Original instance. skeleton (dict): Skeleton data for instance (those needed) later by collector. - additional_data (dict): ... + additional_data (dict): .. + skip_integration_repre_list (list): list of extensions that shouldn't + be published + do_not_addbe _review (bool): explicitly disable review Returns: @@ -631,7 +641,7 @@ def _create_instances_for_aov(instance, skeleton, aov_filter, additional_data, if ext in skip_integration_repre_list: rep["tags"].append("delete") - if preview: + if preview and not do_not_add_review: new_instance["families"] = _solve_families(new_instance) new_instance["representations"] = [rep]