mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge pull request #3951 from pypeclub/feature/OP-3939_Ftrack-option-for-thumbnail-deletion
General: Control Thumbnail integration via explicit configuration profiles
This commit is contained in:
commit
624fc214ef
4 changed files with 154 additions and 1 deletions
|
|
@ -1,3 +1,13 @@
|
|||
""" Integrate Thumbnails for Openpype use in Loaders.
|
||||
|
||||
This thumbnail is different from 'thumbnail' representation which could
|
||||
be uploaded to Ftrack, or used as any other representation in Loaders to
|
||||
pull into a scene.
|
||||
|
||||
This one is used only as image describing content of published item and
|
||||
shows up only in Loader in right column section.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import errno
|
||||
|
|
@ -12,7 +22,7 @@ from openpype.client.operations import OperationsSession, new_thumbnail_doc
|
|||
|
||||
|
||||
class IntegrateThumbnails(pyblish.api.InstancePlugin):
|
||||
"""Integrate Thumbnails."""
|
||||
"""Integrate Thumbnails for Openpype use in Loaders."""
|
||||
|
||||
label = "Integrate Thumbnails"
|
||||
order = pyblish.api.IntegratorOrder + 0.01
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
""" Marks thumbnail representation for integrate to DB or not.
|
||||
|
||||
Some hosts produce thumbnail representation, most of them do not create
|
||||
them explicitly, but they created during extract phase.
|
||||
|
||||
In some cases it might be useful to override implicit setting for host/task
|
||||
|
||||
This plugin needs to run after extract phase, but before integrate.py as
|
||||
thumbnail is part of review family and integrated there.
|
||||
|
||||
It should be better to control integration of thumbnail in one place than
|
||||
configure it in multiple places on host implementations.
|
||||
"""
|
||||
import pyblish.api
|
||||
|
||||
from openpype.lib.profiles_filtering import filter_profiles
|
||||
|
||||
|
||||
class PreIntegrateThumbnails(pyblish.api.InstancePlugin):
|
||||
"""Marks thumbnail representation for integrate to DB or not."""
|
||||
|
||||
label = "Override Integrate Thumbnail Representations"
|
||||
order = pyblish.api.IntegratorOrder - 0.1
|
||||
families = ["review"]
|
||||
|
||||
integrate_profiles = {}
|
||||
|
||||
def process(self, instance):
|
||||
repres = instance.data.get("representations")
|
||||
if not repres:
|
||||
return
|
||||
|
||||
thumbnail_repre = None
|
||||
for repre in repres:
|
||||
if repre["name"] == "thumbnail":
|
||||
thumbnail_repre = repre
|
||||
break
|
||||
|
||||
if not thumbnail_repre:
|
||||
return
|
||||
|
||||
family = instance.data["family"]
|
||||
subset_name = instance.data["subset"]
|
||||
host_name = instance.context.data["hostName"]
|
||||
|
||||
anatomy_data = instance.data["anatomyData"]
|
||||
task = anatomy_data.get("task", {})
|
||||
|
||||
found_profile = filter_profiles(
|
||||
self.integrate_profiles,
|
||||
{
|
||||
"hosts": host_name,
|
||||
"task_names": task.get("name"),
|
||||
"task_types": task.get("type"),
|
||||
"families": family,
|
||||
"subsets": subset_name,
|
||||
},
|
||||
logger=self.log
|
||||
)
|
||||
|
||||
if not found_profile:
|
||||
return
|
||||
|
||||
if not found_profile["integrate_thumbnail"]:
|
||||
if "delete" not in thumbnail_repre["tags"]:
|
||||
thumbnail_repre["tags"].append("delete")
|
||||
else:
|
||||
if "delete" in thumbnail_repre["tags"]:
|
||||
thumbnail_repre["tags"].remove("delete")
|
||||
|
||||
self.log.debug(
|
||||
"Thumbnail repre tags {}".format(thumbnail_repre["tags"]))
|
||||
|
|
@ -164,6 +164,10 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"PreIntegrateThumbnails": {
|
||||
"enabled": true,
|
||||
"integrate_profiles": []
|
||||
},
|
||||
"IntegrateSubsetGroup": {
|
||||
"subset_grouping_profiles": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -555,6 +555,73 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
"collapsible": true,
|
||||
"key": "PreIntegrateThumbnails",
|
||||
"label": "Override Integrate Thumbnail Representations",
|
||||
"is_group": true,
|
||||
"checkbox_key": "enabled",
|
||||
"children": [
|
||||
{
|
||||
"type": "boolean",
|
||||
"key": "enabled",
|
||||
"label": "Enabled"
|
||||
},
|
||||
{
|
||||
"type": "label",
|
||||
"label": "Explicitly set if Thumbnail representation should be integrated into DB.<br> If no matching profile set, existing state from Host implementation is kept."
|
||||
},
|
||||
{
|
||||
"type": "list",
|
||||
"key": "integrate_profiles",
|
||||
"label": "Integrate profiles",
|
||||
"use_label_wrap": true,
|
||||
"object_type": {
|
||||
"type": "dict",
|
||||
"children": [
|
||||
{
|
||||
"key": "families",
|
||||
"label": "Families",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"type": "hosts-enum",
|
||||
"key": "hosts",
|
||||
"label": "Hosts",
|
||||
"multiselection": true
|
||||
},
|
||||
{
|
||||
"key": "task_types",
|
||||
"label": "Task types",
|
||||
"type": "task-types-enum"
|
||||
},
|
||||
{
|
||||
"key": "task_names",
|
||||
"label": "Task names",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"key": "subsets",
|
||||
"label": "Subset names",
|
||||
"type": "list",
|
||||
"object_type": "text"
|
||||
},
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"type": "boolean",
|
||||
"key": "integrate_thumbnail",
|
||||
"label": "Integrate thumbnail"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
"collapsible": true,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue