mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
synced intergrator with mindbender config (files)
This commit is contained in:
parent
7931e8e9c0
commit
ddceb3d4f6
1 changed files with 60 additions and 37 deletions
|
|
@ -40,9 +40,10 @@ class IntegrateAsset(pyblish.api.InstancePlugin):
|
|||
self.register(instance)
|
||||
self.integrate(instance)
|
||||
|
||||
self.log.info("Removing temporary files and folders ...")
|
||||
stagingdir = instance.data["stagingDir"]
|
||||
shutil.rmtree(stagingdir)
|
||||
# TODO: Decide how to clean up? And when?
|
||||
# self.log.info("Removing temporary files and folders ...")
|
||||
# stagingdir = instance.data["stagingDir"]
|
||||
# shutil.rmtree(stagingdir)
|
||||
|
||||
def register(self, instance):
|
||||
|
||||
|
|
@ -52,11 +53,6 @@ class IntegrateAsset(pyblish.api.InstancePlugin):
|
|||
SILO = os.environ["AVALON_SILO"]
|
||||
LOCATION = os.getenv("AVALON_LOCATION")
|
||||
|
||||
# todo(marcus): avoid hardcoding labels in the integrator
|
||||
representation_labels = {".ma": "Maya Ascii",
|
||||
".source": "Original source file",
|
||||
".abc": "Alembic"}
|
||||
|
||||
context = instance.context
|
||||
# Atomicity
|
||||
#
|
||||
|
|
@ -151,30 +147,66 @@ class IntegrateAsset(pyblish.api.InstancePlugin):
|
|||
|
||||
template_publish = project["config"]["template"]["publish"]
|
||||
|
||||
# Find the representations to transfer amongst the files
|
||||
# Each should be a single representation (as such, a single extension)
|
||||
representations = []
|
||||
staging_content = os.listdir(stagingdir)
|
||||
for v, fname in enumerate(staging_content):
|
||||
for files in instance.data["files"]:
|
||||
|
||||
name, ext = os.path.splitext(fname)
|
||||
template_data["representation"] = ext[1:]
|
||||
# Collection
|
||||
# _______
|
||||
# |______|\
|
||||
# | |\|
|
||||
# | ||
|
||||
# | ||
|
||||
# | ||
|
||||
# |_______|
|
||||
#
|
||||
if isinstance(files, list):
|
||||
collection = files
|
||||
|
||||
src = os.path.join(stagingdir, fname)
|
||||
dst = template_publish.format(**template_data)
|
||||
# Assert that each member has identical suffix
|
||||
_, ext = os.path.splitext(collection[0])
|
||||
assert all(ext == os.path.splitext(name)[1]
|
||||
for name in collection), (
|
||||
"Files had varying suffixes, this is a bug"
|
||||
)
|
||||
|
||||
# Backwards compatibility
|
||||
if fname == ".metadata.json":
|
||||
dirname = os.path.dirname(dst)
|
||||
dst = os.path.join(dirname, fname)
|
||||
template_data["representation"] = ext[1:]
|
||||
|
||||
# copy source to destination (library)
|
||||
instance.data["transfers"].append([src, dst])
|
||||
for fname in collection:
|
||||
src = os.path.join(stagingdir, fname)
|
||||
dst = os.path.join(
|
||||
template_publish.format(**template_data),
|
||||
fname
|
||||
)
|
||||
|
||||
instance.data["transfers"].append([src, dst])
|
||||
|
||||
else:
|
||||
# Single file
|
||||
# _______
|
||||
# | |\
|
||||
# | |
|
||||
# | |
|
||||
# | |
|
||||
# |_______|
|
||||
#
|
||||
fname = files
|
||||
_, ext = os.path.splitext(fname)
|
||||
|
||||
template_data["representation"] = ext[1:]
|
||||
|
||||
src = os.path.join(stagingdir, fname)
|
||||
dst = template_publish.format(**template_data)
|
||||
|
||||
instance.data["transfers"].append([src, dst])
|
||||
|
||||
representation = {
|
||||
"schema": "avalon-core:representation-2.0",
|
||||
"type": "representation",
|
||||
"parent": version_id,
|
||||
"name": ext[1:],
|
||||
"data": {"label": representation_labels.get(ext)},
|
||||
"data": {},
|
||||
"dependencies": instance.data.get("dependencies", "").split(),
|
||||
|
||||
# Imprint shortcut to context
|
||||
|
|
@ -190,33 +222,24 @@ class IntegrateAsset(pyblish.api.InstancePlugin):
|
|||
}
|
||||
representations.append(representation)
|
||||
|
||||
# store data for database and source / destinations
|
||||
instance.data["representations"] = representations
|
||||
|
||||
return representations
|
||||
self.log.info("Registering {} items".format(len(representations)))
|
||||
io.insert_many(representations)
|
||||
|
||||
def integrate(self, instance):
|
||||
"""Register the representations and move the files
|
||||
"""Move the files
|
||||
|
||||
Through the stored `representations` and `transfers`
|
||||
Through `instance.data["transfers"]`
|
||||
|
||||
Args:
|
||||
instance: the instance to integrate
|
||||
"""
|
||||
|
||||
# get needed data
|
||||
traffic = instance.data["transfers"]
|
||||
representations = instance.data["representations"]
|
||||
transfers = instance.data["transfers"]
|
||||
|
||||
self.log.info("Registering {} items".format(len(representations)))
|
||||
io.insert_many(representations)
|
||||
|
||||
# moving files
|
||||
for src, dest in traffic:
|
||||
for src, dest in transfers:
|
||||
self.log.info("Copying file .. {} -> {}".format(src, dest))
|
||||
self.copy_file(src, dest)
|
||||
|
||||
|
||||
def copy_file(self, src, dst):
|
||||
""" Copy given source to destination
|
||||
|
||||
|
|
@ -281,7 +304,7 @@ class IntegrateAsset(pyblish.api.InstancePlugin):
|
|||
"data": data}
|
||||
|
||||
def create_version_data(self, context, instance):
|
||||
"""Create the data collection for th version
|
||||
"""Create the data collection for the version
|
||||
|
||||
Args:
|
||||
context: the current context
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue