mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
Merge pull request #5892 from ynput/feature/OP-7238_Use-folder-path-as-identifier-Resolve-editorial
AYON | Resolve: support for folder path
This commit is contained in:
commit
d7c1abaf7d
4 changed files with 42 additions and 31 deletions
|
|
@ -19,7 +19,7 @@ from .menu import load_stylesheet
|
||||||
class CreatorWidget(QtWidgets.QDialog):
|
class CreatorWidget(QtWidgets.QDialog):
|
||||||
|
|
||||||
# output items
|
# output items
|
||||||
items = dict()
|
items = {}
|
||||||
|
|
||||||
def __init__(self, name, info, ui_inputs, parent=None):
|
def __init__(self, name, info, ui_inputs, parent=None):
|
||||||
super(CreatorWidget, self).__init__(parent)
|
super(CreatorWidget, self).__init__(parent)
|
||||||
|
|
@ -101,7 +101,7 @@ class CreatorWidget(QtWidgets.QDialog):
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def value(self, data, new_data=None):
|
def value(self, data, new_data=None):
|
||||||
new_data = new_data or dict()
|
new_data = new_data or {}
|
||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
new_data[k] = {
|
new_data[k] = {
|
||||||
"target": None,
|
"target": None,
|
||||||
|
|
@ -290,7 +290,7 @@ class Spacer(QtWidgets.QWidget):
|
||||||
class ClipLoader:
|
class ClipLoader:
|
||||||
|
|
||||||
active_bin = None
|
active_bin = None
|
||||||
data = dict()
|
data = {}
|
||||||
|
|
||||||
def __init__(self, loader_obj, context, **options):
|
def __init__(self, loader_obj, context, **options):
|
||||||
""" Initialize object
|
""" Initialize object
|
||||||
|
|
@ -588,8 +588,8 @@ class PublishClip:
|
||||||
Returns:
|
Returns:
|
||||||
hiero.core.TrackItem: hiero track item object with openpype tag
|
hiero.core.TrackItem: hiero track item object with openpype tag
|
||||||
"""
|
"""
|
||||||
vertical_clip_match = dict()
|
vertical_clip_match = {}
|
||||||
tag_data = dict()
|
tag_data = {}
|
||||||
types = {
|
types = {
|
||||||
"shot": "shot",
|
"shot": "shot",
|
||||||
"folder": "folder",
|
"folder": "folder",
|
||||||
|
|
@ -665,15 +665,23 @@ class PublishClip:
|
||||||
new_name = self.tag_data.pop("newClipName")
|
new_name = self.tag_data.pop("newClipName")
|
||||||
|
|
||||||
if self.rename:
|
if self.rename:
|
||||||
self.tag_data["asset"] = new_name
|
self.tag_data["asset_name"] = new_name
|
||||||
else:
|
else:
|
||||||
self.tag_data["asset"] = self.ti_name
|
self.tag_data["asset_name"] = self.ti_name
|
||||||
|
|
||||||
|
# AYON unique identifier
|
||||||
|
folder_path = "/{}/{}".format(
|
||||||
|
self.tag_data["hierarchy"],
|
||||||
|
self.tag_data["asset_name"]
|
||||||
|
)
|
||||||
|
self.tag_data["folder_path"] = folder_path
|
||||||
|
|
||||||
|
# create new name for track item
|
||||||
if not lib.pype_marker_workflow:
|
if not lib.pype_marker_workflow:
|
||||||
# create compound clip workflow
|
# create compound clip workflow
|
||||||
lib.create_compound_clip(
|
lib.create_compound_clip(
|
||||||
self.timeline_item_data,
|
self.timeline_item_data,
|
||||||
self.tag_data["asset"],
|
self.tag_data["asset_name"],
|
||||||
self.mp_folder
|
self.mp_folder
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -765,7 +773,7 @@ class PublishClip:
|
||||||
# increasing steps by index of rename iteration
|
# increasing steps by index of rename iteration
|
||||||
self.count_steps *= self.rename_index
|
self.count_steps *= self.rename_index
|
||||||
|
|
||||||
hierarchy_formatting_data = dict()
|
hierarchy_formatting_data = {}
|
||||||
_data = self.timeline_item_default_data.copy()
|
_data = self.timeline_item_default_data.copy()
|
||||||
if self.ui_inputs:
|
if self.ui_inputs:
|
||||||
# adding tag metadata from ui
|
# adding tag metadata from ui
|
||||||
|
|
@ -854,8 +862,7 @@ class PublishClip:
|
||||||
"parents": self.parents,
|
"parents": self.parents,
|
||||||
"hierarchyData": hierarchy_formatting_data,
|
"hierarchyData": hierarchy_formatting_data,
|
||||||
"subset": self.subset,
|
"subset": self.subset,
|
||||||
"family": self.subset_family,
|
"family": self.subset_family
|
||||||
"families": ["clip"]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def _convert_to_entity(self, key):
|
def _convert_to_entity(self, key):
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ class ExtractWorkfile(publish.Extractor):
|
||||||
|
|
||||||
resolve_workfile_ext = ".drp"
|
resolve_workfile_ext = ".drp"
|
||||||
drp_file_name = name + resolve_workfile_ext
|
drp_file_name = name + resolve_workfile_ext
|
||||||
|
|
||||||
drp_file_path = os.path.normpath(
|
drp_file_path = os.path.normpath(
|
||||||
os.path.join(staging_dir, drp_file_name))
|
os.path.join(staging_dir, drp_file_name))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ from openpype.hosts.resolve.api.lib import (
|
||||||
get_publish_attribute,
|
get_publish_attribute,
|
||||||
get_otio_clip_instance_data,
|
get_otio_clip_instance_data,
|
||||||
)
|
)
|
||||||
|
from openpype import AYON_SERVER_ENABLED
|
||||||
|
|
||||||
|
|
||||||
class PrecollectInstances(pyblish.api.ContextPlugin):
|
class PrecollectInstances(pyblish.api.ContextPlugin):
|
||||||
|
|
@ -29,7 +30,7 @@ class PrecollectInstances(pyblish.api.ContextPlugin):
|
||||||
|
|
||||||
for timeline_item_data in selected_timeline_items:
|
for timeline_item_data in selected_timeline_items:
|
||||||
|
|
||||||
data = dict()
|
data = {}
|
||||||
timeline_item = timeline_item_data["clip"]["item"]
|
timeline_item = timeline_item_data["clip"]["item"]
|
||||||
|
|
||||||
# get pype tag data
|
# get pype tag data
|
||||||
|
|
@ -60,24 +61,25 @@ class PrecollectInstances(pyblish.api.ContextPlugin):
|
||||||
if k not in ("id", "applieswhole", "label")
|
if k not in ("id", "applieswhole", "label")
|
||||||
})
|
})
|
||||||
|
|
||||||
asset = tag_data["asset"]
|
if AYON_SERVER_ENABLED:
|
||||||
|
asset = tag_data["folder_path"]
|
||||||
|
else:
|
||||||
|
asset = tag_data["asset_name"]
|
||||||
|
|
||||||
subset = tag_data["subset"]
|
subset = tag_data["subset"]
|
||||||
|
|
||||||
# insert family into families
|
|
||||||
family = tag_data["family"]
|
|
||||||
families = [str(f) for f in tag_data["families"]]
|
|
||||||
families.insert(0, str(family))
|
|
||||||
|
|
||||||
data.update({
|
data.update({
|
||||||
"name": "{} {} {}".format(asset, subset, families),
|
"name": "{}_{}".format(asset, subset),
|
||||||
|
"label": "{} {}".format(asset, subset),
|
||||||
"asset": asset,
|
"asset": asset,
|
||||||
"item": timeline_item,
|
"item": timeline_item,
|
||||||
"families": families,
|
|
||||||
"publish": get_publish_attribute(timeline_item),
|
"publish": get_publish_attribute(timeline_item),
|
||||||
"fps": context.data["fps"],
|
"fps": context.data["fps"],
|
||||||
"handleStart": handle_start,
|
"handleStart": handle_start,
|
||||||
"handleEnd": handle_end,
|
"handleEnd": handle_end,
|
||||||
"newAssetPublishing": True
|
"newAssetPublishing": True,
|
||||||
|
"families": ["clip"],
|
||||||
|
"isEditorial": True
|
||||||
})
|
})
|
||||||
|
|
||||||
# otio clip data
|
# otio clip data
|
||||||
|
|
@ -135,7 +137,8 @@ class PrecollectInstances(pyblish.api.ContextPlugin):
|
||||||
family = "shot"
|
family = "shot"
|
||||||
|
|
||||||
data.update({
|
data.update({
|
||||||
"name": "{} {} {}".format(asset, subset, family),
|
"name": "{}_{}".format(asset, subset),
|
||||||
|
"label": "{} {}".format(asset, subset),
|
||||||
"subset": subset,
|
"subset": subset,
|
||||||
"asset": asset,
|
"asset": asset,
|
||||||
"family": family,
|
"family": family,
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ from pprint import pformat
|
||||||
|
|
||||||
from openpype import AYON_SERVER_ENABLED
|
from openpype import AYON_SERVER_ENABLED
|
||||||
from openpype.pipeline import get_current_asset_name
|
from openpype.pipeline import get_current_asset_name
|
||||||
|
|
||||||
from openpype.hosts.resolve import api as rapi
|
from openpype.hosts.resolve import api as rapi
|
||||||
from openpype.hosts.resolve.otio import davinci_export
|
from openpype.hosts.resolve.otio import davinci_export
|
||||||
|
|
||||||
|
|
@ -14,14 +15,12 @@ class PrecollectWorkfile(pyblish.api.ContextPlugin):
|
||||||
order = pyblish.api.CollectorOrder - 0.5
|
order = pyblish.api.CollectorOrder - 0.5
|
||||||
|
|
||||||
def process(self, context):
|
def process(self, context):
|
||||||
current_asset = get_current_asset_name()
|
current_asset_name = asset_name = get_current_asset_name()
|
||||||
if AYON_SERVER_ENABLED:
|
|
||||||
# AYON compatibility split name and use last piece
|
|
||||||
asset_name = current_asset.split("/")[-1]
|
|
||||||
else:
|
|
||||||
asset_name = current_asset
|
|
||||||
|
|
||||||
subset = "workfile"
|
if AYON_SERVER_ENABLED:
|
||||||
|
asset_name = current_asset_name.split("/")[-1]
|
||||||
|
|
||||||
|
subset = "workfileMain"
|
||||||
project = rapi.get_current_project()
|
project = rapi.get_current_project()
|
||||||
fps = project.GetSetting("timelineFrameRate")
|
fps = project.GetSetting("timelineFrameRate")
|
||||||
video_tracks = rapi.get_video_track_names()
|
video_tracks = rapi.get_video_track_names()
|
||||||
|
|
@ -31,8 +30,9 @@ class PrecollectWorkfile(pyblish.api.ContextPlugin):
|
||||||
|
|
||||||
instance_data = {
|
instance_data = {
|
||||||
"name": "{}_{}".format(asset_name, subset),
|
"name": "{}_{}".format(asset_name, subset),
|
||||||
"asset": current_asset,
|
"label": "{} {}".format(current_asset_name, subset),
|
||||||
"subset": "{}{}".format(asset_name, subset.capitalize()),
|
"asset": current_asset_name,
|
||||||
|
"subset": subset,
|
||||||
"item": project,
|
"item": project,
|
||||||
"family": "workfile",
|
"family": "workfile",
|
||||||
"families": []
|
"families": []
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue