mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
filter representations before integration starts
This commit is contained in:
parent
26dd1988fa
commit
68ee05bd36
1 changed files with 41 additions and 21 deletions
|
|
@ -145,9 +145,43 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
|
||||||
if instance.data.get("farm"):
|
if instance.data.get("farm"):
|
||||||
return
|
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 = {}
|
self.integrated_file_sizes = {}
|
||||||
try:
|
try:
|
||||||
self.register(instance)
|
self.register(instance, filtered_repres)
|
||||||
self.log.info("Integrated Asset in to the database ...")
|
self.log.info("Integrated Asset in to the database ...")
|
||||||
self.log.info("instance.data: {}".format(instance.data))
|
self.log.info("instance.data: {}".format(instance.data))
|
||||||
self.handle_destination_files(self.integrated_file_sizes,
|
self.handle_destination_files(self.integrated_file_sizes,
|
||||||
|
|
@ -158,7 +192,7 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
|
||||||
self.handle_destination_files(self.integrated_file_sizes, 'remove')
|
self.handle_destination_files(self.integrated_file_sizes, 'remove')
|
||||||
six.reraise(*sys.exc_info())
|
six.reraise(*sys.exc_info())
|
||||||
|
|
||||||
def register(self, instance):
|
def register(self, instance, repres):
|
||||||
# Required environment variables
|
# Required environment variables
|
||||||
anatomy_data = instance.data["anatomyData"]
|
anatomy_data = instance.data["anatomyData"]
|
||||||
|
|
||||||
|
|
@ -236,18 +270,6 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
|
||||||
"Establishing staging directory @ {0}".format(stagingdir)
|
"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)
|
subset = self.get_subset(asset_entity, instance)
|
||||||
instance.data["subsetEntity"] = subset
|
instance.data["subsetEntity"] = subset
|
||||||
|
|
||||||
|
|
@ -270,7 +292,10 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
|
||||||
|
|
||||||
self.log.debug("Creating version ...")
|
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({
|
existing_version = legacy_io.find_one({
|
||||||
'type': 'version',
|
'type': 'version',
|
||||||
|
|
@ -373,18 +398,13 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
|
||||||
if profile:
|
if profile:
|
||||||
template_name = profile["template_name"]
|
template_name = profile["template_name"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
published_representations = {}
|
published_representations = {}
|
||||||
for idx, repre in enumerate(instance.data["representations"]):
|
for idx, repre in enumerate(repres):
|
||||||
# reset transfers for next representation
|
# reset transfers for next representation
|
||||||
# instance.data['transfers'] is used as a global variable
|
# instance.data['transfers'] is used as a global variable
|
||||||
# in current codebase
|
# in current codebase
|
||||||
instance.data['transfers'] = list(orig_transfers)
|
instance.data['transfers'] = list(orig_transfers)
|
||||||
|
|
||||||
if "delete" in repre.get("tags", []):
|
|
||||||
continue
|
|
||||||
|
|
||||||
published_files = []
|
published_files = []
|
||||||
|
|
||||||
# create template data for Anatomy
|
# create template data for Anatomy
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue