Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Standalone: settings improvements #3355

Merged
merged 7 commits into from
Jun 23, 2022
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os
from pprint import pformat
import re
from copy import deepcopy
import pyblish.api
Expand All @@ -21,6 +22,7 @@ class CollectHierarchyInstance(pyblish.api.ContextPlugin):
families = ["shot"]

# presets
shot_rename = True
shot_rename_template = None
shot_rename_search_patterns = None
shot_add_hierarchy = None
Expand All @@ -46,7 +48,7 @@ def rename_with_hierarchy(self, instance):
parent_name = instance.context.data["assetEntity"]["name"]
clip = instance.data["item"]
clip_name = os.path.splitext(clip.name)[0].lower()
if self.shot_rename_search_patterns:
if self.shot_rename_search_patterns and self.shot_rename:
search_text += parent_name + clip_name
instance.data["anatomyData"].update({"clip_name": clip_name})
for type, pattern in self.shot_rename_search_patterns.items():
Expand All @@ -56,9 +58,9 @@ def rename_with_hierarchy(self, instance):
continue
instance.data["anatomyData"][type] = match[-1]

# format to new shot name
instance.data["asset"] = self.shot_rename_template.format(
**instance.data["anatomyData"])
# format to new shot name
instance.data["asset"] = self.shot_rename_template.format(
**instance.data["anatomyData"])

def create_hierarchy(self, instance):
asset_doc = instance.context.data["assetEntity"]
Expand Down Expand Up @@ -87,7 +89,7 @@ def create_hierarchy(self, instance):
})

hierarchy = list()
if self.shot_add_hierarchy:
if self.shot_add_hierarchy.get("enabled"):
parent_template_patern = re.compile(r"\{([a-z]*?)\}")
# fill the parents parts from presets
shot_add_hierarchy = self.shot_add_hierarchy.copy()
Expand Down Expand Up @@ -131,8 +133,8 @@ def create_hierarchy(self, instance):
instance.data["parents"] = parents

# print
self.log.debug(f"Hierarchy: {hierarchy}")
self.log.debug(f"parents: {parents}")
self.log.warning(f"Hierarchy: {hierarchy}")
self.log.info(f"parents: {parents}")

tasks_to_add = dict()
if self.shot_add_tasks:
Expand Down Expand Up @@ -163,6 +165,9 @@ def create_hierarchy(self, instance):
})

def process(self, context):
self.log.info("self.shot_add_hierarchy: {}".format(
pformat(self.shot_add_hierarchy)
))
for instance in context:
if instance.data["family"] in self.families:
self.processing_instance(instance)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,14 @@ def process(self, instance):
# Generate mov file.
fps = instance.data["fps"]
video_file_path = instance.data["editorialSourcePath"]
extensions = instance.data.get("extensions", [".mov"])
extensions = instance.data.get("extensions", ["mov"])

for ext in extensions:
self.log.info("Processing ext: `{}`".format(ext))

if not ext.startswith("."):
ext = "." + ext

clip_trimed_path = os.path.join(
staging_dir, instance.data["name"] + ext)
# # check video file metadata
Expand Down
71 changes: 45 additions & 26 deletions openpype/plugins/publish/integrate_new.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,43 @@ def process(self, instance):
if instance.data.get("farm"):
return

# Prepare repsentations that should be integrated
repres = instance.data.get("representations")
# Raise error if instance don't have any representations
if not repres:
raise ValueError(
"Instance {} has no files to transfer".format(
instance.data["family"]
)
)

# Validate type of stored representations
if not isinstance(repres, (list, tuple)):
raise TypeError(
"Instance 'files' must be a list, got: {0} {1}".format(
str(type(repres)), str(repres)
)
)

# Filter representations
filtered_repres = []
for repre in repres:
if "delete" in repre.get("tags", []):
continue
filtered_repres.append(repre)

# Skip instance if there are not representations to integrate
# all representations should not be integrated
if not filtered_repres:
self.log.warning((
"Skipping, there are no representations"
" to integrate for instance {}"
).format(instance.data["family"]))
return

self.integrated_file_sizes = {}
try:
self.register(instance)
self.register(instance, filtered_repres)
self.log.info("Integrated Asset in to the database ...")
self.log.info("instance.data: {}".format(instance.data))
self.handle_destination_files(self.integrated_file_sizes,
Expand All @@ -158,7 +192,7 @@ def process(self, instance):
self.handle_destination_files(self.integrated_file_sizes, 'remove')
six.reraise(*sys.exc_info())

def register(self, instance):
def register(self, instance, repres):
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'IntegrateAssetNew.register' is too complex (52)

# Required environment variables
anatomy_data = instance.data["anatomyData"]

Expand Down Expand Up @@ -236,18 +270,6 @@ def register(self, instance):
"Establishing staging directory @ {0}".format(stagingdir)
)

# Ensure at least one file is set up for transfer in staging dir.
repres = instance.data.get("representations")
repres = instance.data.get("representations")
msg = "Instance {} has no files to transfer".format(
instance.data["family"])
assert repres, msg
assert isinstance(repres, (list, tuple)), (
"Instance 'files' must be a list, got: {0} {1}".format(
str(type(repres)), str(repres)
)
)

subset = self.get_subset(asset_entity, instance)
instance.data["subsetEntity"] = subset

Expand All @@ -270,7 +292,10 @@ def register(self, instance):

self.log.debug("Creating version ...")

new_repre_names_low = [_repre["name"].lower() for _repre in repres]
new_repre_names_low = [
_repre["name"].lower()
for _repre in repres
]

existing_version = legacy_io.find_one({
'type': 'version',
Expand Down Expand Up @@ -373,18 +398,8 @@ def register(self, instance):
if profile:
template_name = profile["template_name"]



published_representations = {}
for idx, repre in enumerate(instance.data["representations"]):
# reset transfers for next representation
# instance.data['transfers'] is used as a global variable
# in current codebase
instance.data['transfers'] = list(orig_transfers)

if "delete" in repre.get("tags", []):
continue

for idx, repre in enumerate(repres):
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Loop control variable 'idx' not used within the loop body. If this is intended, start the name with an underscore.

published_files = []

# create template data for Anatomy
Expand Down Expand Up @@ -662,6 +677,10 @@ def register(self, instance):
"published_files": published_files
}
self.log.debug("__ representations: {}".format(representations))
# reset transfers for next representation
# instance.data['transfers'] is used as a global variable
# in current codebase
instance.data['transfers'] = list(orig_transfers)

# Remove old representations if there are any (before insertion of new)
if existing_repres:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,12 +257,14 @@
]
},
"CollectHierarchyInstance": {
"shot_rename": true,
"shot_rename_template": "{project[code]}_{_sequence_}_{_shot_}",
"shot_rename_search_patterns": {
"_sequence_": "(\\d{4})(?=_\\d{4})",
"_shot_": "(\\d{4})(?!_\\d{4})"
"_sequence_": "(sc\\d{3})",
"_shot_": "(sh\\d{3})"
},
"shot_add_hierarchy": {
"enabled": true,
"parents_path": "{project}/{folder}/{sequence}",
"parents": {
"project": "{project[name]}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,11 @@
"label": "Collect Instance Hierarchy",
"is_group": true,
"children": [
{
"type": "boolean",
"key": "shot_rename",
"label": "Shot Rename"
},
{
"type": "text",
"key": "shot_rename_template",
Expand All @@ -289,7 +294,13 @@
"type": "dict",
"key": "shot_add_hierarchy",
"label": "Shot hierarchy",
"checkbox_key": "enabled",
"children": [
{
"type": "boolean",
"key": "enabled",
"label": "Enabled"
},
{
"type": "text",
"key": "parents_path",
Expand Down Expand Up @@ -343,8 +354,8 @@
"type": "number",
"key": "timeline_frame_start",
"label": "Timeline start frame",
"default": 900000,
"minimum": 1,
"default": 90000,
"minimum": 0,
"maximum": 10000000
},
{
Expand Down