Fix delivering UDIMs using {udim} in delivery template

This commit is contained in:
Roy Nieterau 2024-09-23 13:55:09 +02:00
parent d00fa72892
commit 50428f1528
2 changed files with 21 additions and 2 deletions

View file

@ -81,7 +81,10 @@ def collect_frames(files):
dict: {'/folder/product_v001.0001.png': '0001', ....}
"""
patterns = [clique.PATTERNS["frames"]]
# clique.PATTERNS["frames"] supports only `.1001.exr` not `_1001.exr` so
# we use a customized pattern.
pattern = "[_.](?P<index>(?P<padding>0*)\\d+)\\.\\D+\\d?$"
patterns = [pattern]
collections, remainder = clique.assemble(
files, minimum_items=1, patterns=patterns)

View file

@ -231,6 +231,11 @@ class DeliveryOptionsDialog(QtWidgets.QDialog):
self.log
]
# TODO: This will currently incorrectly detect 'resources'
# that are published along with the publish, because those should
# not adhere to the template directly but are ingested in a
# customized way. For example, maya look textures or any publish
# that directly adds files into `instance.data["transfers"]`.
if repre.get("files"):
src_paths = []
for repre_file in repre["files"]:
@ -263,7 +268,18 @@ class DeliveryOptionsDialog(QtWidgets.QDialog):
frame = dst_frame
if frame is not None:
anatomy_data["frame"] = frame
if repre["context"].get("frame"):
anatomy_data["frame"] = frame
elif repre["context"].get("udim"):
anatomy_data["udim"] = frame
else:
# Fallback
self.log.warning(
"Representation context has no frame or udim"
" data. Supplying sequence frame to '{frame}'"
" formatting data."
)
anatomy_data["frame"] = frame
new_report_items, uploaded = deliver_single_file(*args)
report_items.update(new_report_items)
self._update_progress(uploaded)