From b5cab8358faf18b280d7b9e2f671cb12d593f617 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 12 Aug 2020 12:18:01 +0200 Subject: [PATCH] extractor for compositing enhanced --- .../publish/extract_images_for_compositing.py | 55 ++++++++++++++++++- .../publish/extract_layout_images.py | 4 +- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/pype/plugins/standalonepublisher/publish/extract_images_for_compositing.py b/pype/plugins/standalonepublisher/publish/extract_images_for_compositing.py index 1693c86d54..52293a8407 100644 --- a/pype/plugins/standalonepublisher/publish/extract_images_for_compositing.py +++ b/pype/plugins/standalonepublisher/publish/extract_images_for_compositing.py @@ -1,5 +1,6 @@ import os import json +import copy import pype.api PSDImage = None @@ -10,6 +11,8 @@ class ExtractImagesForComp(pype.api.Extractor): families = ["imageForComp"] hosts = ["standalonepublisher"] + new_instance_family = "image" + # Presetable allowed_group_names = ["OL", "BG", "MG", "FG", "UL", "SKY", "Field Guide"] @@ -27,11 +30,16 @@ class ExtractImagesForComp(pype.api.Extractor): "BUG: Python module `psd-tools` is not installed!" ) + self.redo_global_plugins(instance) + repres = instance.data.get("representations") if not repres: self.log.info("There are no representations on instance.") return + if not instance.data.get("transfers"): + instance.data["transfers"] = [] + for repre in tuple(repres): # Skip all non files without .psd extension if repre["ext"] != ".psd": @@ -73,7 +81,7 @@ class ExtractImagesForComp(pype.api.Extractor): with open(json_full_path, "w") as json_filestream: json.dump(json_data, json_filestream, indent=4) - instance.data["transfers"] = transfers + instance.data["transfers"].extend(transfers) instance.data["representations"].append(new_repre) instance.data["representations"].remove(repre) @@ -134,3 +142,48 @@ class ExtractImagesForComp(pype.api.Extractor): json_data["children_layers"].append(main_layer_data) return json_data, transfers + + def redo_global_plugins(self, instance): + # TODO do this in collection phase + # Copy `families` and check if `family` is not in current families + families = instance.data.get("families") or list() + if families: + families = list(set(families)) + + if self.new_instance_family in families: + families.remove(self.new_instance_family) + + self.log.debug( + "Setting new instance families {}".format(str(families)) + ) + instance.data["families"] = families + + # Override instance data with new information + instance.data["family"] = self.new_instance_family + + # Same data apply to anatomy data + instance.data["anatomyData"].update({ + "family": self.new_instance_family, + }) + + # Redo publish and resources dir + anatomy = instance.context.data["anatomy"] + template_data = copy.deepcopy(instance.data["anatomyData"]) + template_data.update({ + "frame": "FRAME_TEMP", + "representation": "TEMP" + }) + anatomy_filled = anatomy.format(template_data) + if "folder" in anatomy.templates["publish"]: + publish_folder = anatomy_filled["publish"]["folder"] + else: + publish_folder = os.path.dirname(anatomy_filled["publish"]["path"]) + + publish_folder = os.path.normpath(publish_folder) + resources_folder = os.path.join(publish_folder, "resources") + + instance.data["publishDir"] = publish_folder + instance.data["resourcesDir"] = resources_folder + + self.log.debug("publishDir: \"{}\"".format(publish_folder)) + self.log.debug("resourcesDir: \"{}\"".format(resources_folder)) diff --git a/pype/plugins/standalonepublisher/publish/extract_layout_images.py b/pype/plugins/standalonepublisher/publish/extract_layout_images.py index 7209ec5c0e..eb27a5a568 100644 --- a/pype/plugins/standalonepublisher/publish/extract_layout_images.py +++ b/pype/plugins/standalonepublisher/publish/extract_layout_images.py @@ -76,7 +76,7 @@ class ExtractImageForLayout(pype.api.Extractor): ) # Find latest version - version_number = self.find_latest_version(subset_name, asset_doc) + version_number = self.find_next_version(subset_name, asset_doc) self.log.info( "Next version of instance \"{}\" will be {}".format( instance_name, version_number @@ -122,7 +122,7 @@ class ExtractImageForLayout(pype.api.Extractor): ) new_instance.data["representations"] = [new_repre] - def find_latest_version(self, subset_name, asset_doc): + def find_next_version(self, subset_name, asset_doc): subset_doc = io.find_one({ "type": "subset", "name": subset_name,