fill both 'family' and 'productType'

This commit is contained in:
Jakub Trllo 2024-02-23 15:53:00 +01:00
parent 4a7bc9a571
commit 3afa0e3bca
33 changed files with 67 additions and 31 deletions

View file

@ -88,11 +88,13 @@ class CollectAERender(publish.AbstractCollectRender):
raise ValueError("No file extension set in Render Queue")
render_item = render_q[0]
product_type = "render"
instance_families = inst.data.get("families", [])
instance_families.append("render")
instance_families.append(product_type)
product_name = inst.data["productName"]
instance = AERenderInstance(
productType="render",
productType=product_type,
family=product_type,
families=instance_families,
version=version,
time="",

View file

@ -56,6 +56,7 @@ class CollectCelactionInstances(pyblish.api.ContextPlugin):
"label": scene_file,
"productName": product_name,
"productType": product_type,
"family": product_type,
"families": [product_type],
"representations": []
})
@ -86,6 +87,7 @@ class CollectCelactionInstances(pyblish.api.ContextPlugin):
instance.data.update({
"label": "{} - farm".format(product_name),
"productType": product_type,
"family": product_type,
"families": [product_type],
"productName": product_name
})

View file

@ -356,6 +356,7 @@ class CollectTimelineInstances(pyblish.api.ContextPlugin):
"productName": product_name,
"folderPath": folder_path,
"productType": product_type,
"family": product_type,
"families": [product_type]
})

View file

@ -45,6 +45,7 @@ class CollecTimelineOTIO(pyblish.api.ContextPlugin):
"folderPath": folder_path,
"productName": product_name,
"productType": product_type,
"family": product_type,
"families": [product_type]
}

View file

@ -59,9 +59,10 @@ class CollectFusionRender(
instance_families = inst.data.get("families", [])
product_name = inst.data["productName"]
instance = FusionRenderInstance(
productType=product_type,
tool=tool,
workfileComp=comp,
productType=product_type,
family=product_type,
families=instance_families,
version=version,
time="",

View file

@ -154,6 +154,7 @@ class CollectFarmRender(publish.AbstractCollectRender):
name=node.split("/")[1],
productType="render.farm",
family="render.farm",
families=["render.farm"],
farm=True,

View file

@ -53,6 +53,7 @@ class CollectInstances(pyblish.api.ContextPlugin):
if product_type is None:
product_type = data["family"]
data["productType"] = product_type
data["family"] = product_type
# skip render farm product type as it is collected separately
if product_type == "renderFarm":

View file

@ -39,6 +39,7 @@ class CollectPalettes(pyblish.api.ContextPlugin):
instance.data.update({
"id": id,
"productType": product_type,
"family": product_type,
"families": [product_type],
"folderPath": folder_path,
"productName": "{}{}".format("palette", name)

View file

@ -34,6 +34,7 @@ class CollectWorkfile(pyblish.api.ContextPlugin):
"label": basename,
"name": basename,
"productType": product_type,
"family": product_type,
"families": [product_type],
"representations": [],
"folderPath": context.data["folderPath"]

View file

@ -138,6 +138,7 @@ class CollectFrameTagInstances(pyblish.api.ContextPlugin):
"name": name,
"label": "{} {}".format(name, product_data["frames"]),
"productType": product_type,
"family": product_type,
"families": [product_type, "frame"],
"folderPath": product_data["folderPath"],
"productName": name,

View file

@ -209,6 +209,7 @@ class PrecollectInstances(pyblish.api.ContextPlugin):
"label": label,
"productName": product_name,
"productType": product_type,
"family": product_type,
"families": [product_type]
})
@ -267,6 +268,7 @@ class PrecollectInstances(pyblish.api.ContextPlugin):
"label": label,
"productName": product_name,
"productType": product_type,
"family": product_type,
"families": [product_type, "clip"]
})
# remove review track attr if any

View file

@ -71,6 +71,7 @@ class PrecollectWorkfile(pyblish.api.ContextPlugin):
),
"item": project,
"productType": product_type,
"family": product_type,
"families": [product_type],
"representations": [workfile_representation, thumb_representation]
}

View file

@ -83,10 +83,12 @@ class CollectUsdBootstrap(pyblish.api.InstancePlugin):
)
)
product_type = "usd.bootstrap"
new = instance.context.create_instance(product_name)
new.data["productName"] = product_name
new.data["label"] = "{0} ({1})".format(product_name, asset_name)
new.data["productType"] = "usd.bootstrap"
new.data["productType"] = product_type
new.data["family"] = product_type
new.data["comment"] = "Automated bootstrap USD file."
new.data["publishFamilies"] = ["usd"]

View file

@ -52,6 +52,7 @@ class CollectUsdLayers(pyblish.api.InstancePlugin):
layer_inst = context.create_instance(name)
layer_inst.data["productType"] = product_type
layer_inst.data["family"] = product_type
layer_inst.data["families"] = [product_type]
layer_inst.data["productName"] = "__stub__"
layer_inst.data["label"] = label

View file

@ -92,6 +92,7 @@ class CollectRender(pyblish.api.InstancePlugin):
instance.data["attachTo"] = []
renderer_class = get_current_renderer()
renderer = str(renderer_class).split(":")[0]
product_type = "maxrender"
# also need to get the render dir for conversion
data = {
"folderPath": instance.data["folderPath"],
@ -99,8 +100,9 @@ class CollectRender(pyblish.api.InstancePlugin):
"publish": True,
"maxversion": str(get_max_version()),
"imageFormat": img_format,
"productType": 'maxrender',
"families": ['maxrender'],
"productType": product_type,
"family": product_type,
"families": [product_type],
"renderer": renderer,
"source": filepath,
"plugin": "3dsmax",

View file

@ -56,6 +56,7 @@ class CollectVrayScene(pyblish.api.InstancePlugin):
frame_end_handle = frame_end_render
# Get layer specific settings, might be overrides
product_type = "vrayscene_layer"
data = {
"productName": layer_name,
"layer": layer_name,
@ -75,8 +76,9 @@ class CollectVrayScene(pyblish.api.InstancePlugin):
layer=layer_name)),
"renderer": renderer,
# instance product type
"productType": "vrayscene_layer",
"families": ["vrayscene_layer"],
"productType": product_type,
"family": product_type,
"families": [product_type],
"time": get_formatted_current_time(),
"author": context.data["user"],
# Add source to allow tracing back to the scene from

View file

@ -128,18 +128,21 @@ class NukeRenderLocal(publish.Extractor,
anatomy_data = instance.data["anatomyData"]
# redefinition of families
if "render.local" in families:
instance.data["family"] = "render"
instance.data["productType"] = "render"
families.remove("render.local")
families.insert(0, "render2d")
anatomy_data["family"] = "render"
anatomy_data["product"]["type"] = "render"
elif "prerender.local" in families:
instance.data["family"] = "prerender"
instance.data["productType"] = "prerender"
families.remove("prerender.local")
families.insert(0, "prerender")
anatomy_data["family"] = "prerender"
anatomy_data["product"]["type"] = "prerender"
elif "image.local" in families:
instance.data["family"] = "image"
instance.data["productType"] = "image"
families.remove("image.local")
anatomy_data["family"] = "image"

View file

@ -53,7 +53,7 @@ class ExtractReviewIntermediates(publish.Extractor):
# TODO 'families' should not be included for filtering of outputs
families = set(instance.data["families"])
# add main family to make sure all families are compared
# Add product type to families
families.add(instance.data["productType"])
task_type = instance.context.data["taskType"]

View file

@ -95,6 +95,7 @@ class CollectAutoImage(pyblish.api.ContextPlugin):
instance.data["ids"] = publishable_ids
instance.data["publish"] = True
instance.data["creator_identifier"] = "auto_image"
instance.data["family"] = product_type
instance.data["families"] = [product_type]
if auto_creator["mark_for_review"]:

View file

@ -85,6 +85,7 @@ class CollectAutoReview(pyblish.api.ContextPlugin):
"name": product_name,
"productName": product_name,
"productType": product_type,
"family": product_type,
"families": [product_type],
"representations": [],
"folderPath": folder_path,

View file

@ -89,6 +89,7 @@ class CollectAutoWorkfile(pyblish.api.ContextPlugin):
"name": base_name,
"productName": product_name,
"productType": product_type,
"family": product_type,
"families": [product_type],
"representations": [],
"folderPath": folder_path

View file

@ -188,6 +188,7 @@ class CollectColorCodedInstances(pyblish.api.ContextPlugin):
instance.data["folderPath"] = folder_path
instance.data["task"] = task_name
instance.data["layer"] = layer
instance.data["family"] = product_type
instance.data["families"] = [product_type]
return instance

View file

@ -139,6 +139,7 @@ class PrecollectInstances(pyblish.api.ContextPlugin):
"folderPath": asset,
"productName": product_name,
"productType": product_type,
"family": product_type,
"families": [product_type],
"publish": get_publish_attribute(timeline_item)
})

View file

@ -28,10 +28,11 @@ class PrecollectWorkfile(pyblish.api.ContextPlugin):
instance_data = {
"name": "{}_{}".format(asset_name, product_name),
"label": "{} {}".format(current_asset_name, product_name),
"item": project,
"folderPath": current_asset_name,
"productName": product_name,
"item": project,
"productType": "workfile",
"family": "workfile",
"families": []
}

View file

@ -113,14 +113,16 @@ class CollectTextureSet(pyblish.api.InstancePlugin):
representation["stagingDir"] = staging_dir
# Clone the instance
product_type = "image"
image_instance = context.create_instance(image_product_name)
image_instance[:] = instance[:]
image_instance.data.update(copy.deepcopy(dict(instance.data)))
image_instance.data["name"] = image_product_name
image_instance.data["label"] = image_product_name
image_instance.data["productName"] = image_product_name
image_instance.data["productType"] = "image"
image_instance.data["families"] = ["image", "textures"]
image_instance.data["productType"] = product_type
image_instance.data["family"] = product_type
image_instance.data["families"] = [product_type, "textures"]
image_instance.data["representations"] = [representation]
# Group the textures together in the loader

View file

@ -57,6 +57,7 @@ class CollectRenderInstances(pyblish.api.InstancePlugin):
seq = s.get('sequence')
seq_name = seq.get_name()
product_type = "render"
new_product_name = f"{data.get('productName')}_{seq_name}"
new_instance = context.create_instance(
new_product_name
@ -67,9 +68,10 @@ class CollectRenderInstances(pyblish.api.InstancePlugin):
new_data["folderPath"] = seq_name
new_data["setMembers"] = seq_name
new_data["productType"] = "render"
new_data["productName"] = new_product_name
new_data["families"] = ["render", "review"]
new_data["productType"] = product_type
new_data["family"] = product_type
new_data["families"] = [product_type, "review"]
new_data["parent"] = data.get("parent")
new_data["level"] = data.get("level")
new_data["output"] = s.get('output')

View file

@ -188,7 +188,8 @@ class CollectSequencesFromJob(pyblish.api.ContextPlugin):
instance.data.update({
"name": str(collection),
"productType": families[0], # backwards compatibility / pyblish
"productType": families[0],
"family": families[0],
"families": list(families),
"productName": product_name,
"folderPath": data.get(

View file

@ -1193,14 +1193,14 @@ class CreatedInstance:
instance_data = copy.deepcopy(instance_data)
product_type = instance_data.get("productType", None)
if not product_type:
product_type = instance_data.get("family", None)
product_type = instance_data.get("productType")
if product_type is None:
product_type = instance_data.get("family")
if product_type is None:
product_type = creator.product_type
product_name = instance_data.get("productName", None)
if not product_name:
product_name = instance_data.get("subset", None)
product_name = instance_data.get("productName")
if product_name is None:
product_name = instance_data.get("subset")
return cls(
product_type, product_name, instance_data, creator

View file

@ -801,8 +801,9 @@ def create_skeleton_instance_cache(instance):
families = ["render", product_type]
instance_skeleton_data = {
"productType": product_type,
"productName": data["productName"],
"productType": product_type,
"family": product_type,
"families": families,
"folderPath": data["folderPath"],
"frameStart": time_data.start,
@ -1085,6 +1086,7 @@ def attach_instances_to_product(attach_to, instances):
new_inst["version"] = attach_instance.get("version")
new_inst["productName"] = attach_instance.get("productName")
new_inst["productType"] = attach_instance.get("productType")
new_inst["family"] = attach_instance.get("family")
new_inst["append"] = True
# don't set subsetGroup if we are attaching
new_inst.pop("subsetGroup")

View file

@ -28,6 +28,7 @@ class RenderInstance(object):
time = attr.ib() # time of instance creation (get_formatted_current_time)
source = attr.ib() # path to source scene file
label = attr.ib() # label to show in GUI
family = attr.ib() # product type for pyblish filtering
productType = attr.ib() # product type
productName = attr.ib() # product name
folderPath = attr.ib() # folder path

View file

@ -954,11 +954,11 @@ def get_publish_instance_families(instance):
list[str]: List of families.
"""
product_type = instance.data.get("productType")
family = instance.data.get("family")
families = set(instance.data.get("families") or [])
output = []
if product_type:
output.append(product_type)
families.discard(product_type)
if family:
output.append(family)
families.discard(family)
output.extend(families)
return output

View file

@ -87,6 +87,7 @@ class CollectFromCreateContext(pyblish.api.ContextPlugin):
"task": in_data["task"],
"productName": product_name,
"productType": in_data["productType"],
"family": in_data["productType"],
"families": instance_families,
"representations": [],
"thumbnailSource": thumbnail_path

View file

@ -33,11 +33,7 @@ class InstanceItem:
def __init__(self, instance_id, instance_data, logs_by_instance_id):
self._id = instance_id
self.label = instance_data.get("label") or instance_data.get("name")
family = instance_data.get("productType")
if not family:
family = instance_data.get("family")
self.family = family
self.family = instance_data.get("family")
self.removed = not instance_data.get("exists", True)
logs = logs_by_instance_id.get(instance_id) or []