OP-3908 - revert back to AE specific cache method

Standard approach doesn't handle legacy instances, eg. instance without creator_identifier.
This commit is contained in:
Petr Kalis 2022-11-03 13:20:24 +01:00
parent 64f8e2fc9c
commit de5decbcbb
3 changed files with 20 additions and 10 deletions

View file

@ -1,5 +1,6 @@
import os import os
from Qt import QtWidgets from Qt import QtWidgets
import collections
import pyblish.api import pyblish.api
@ -294,3 +295,18 @@ def containerise(name,
stub.imprint(comp.id, data) stub.imprint(comp.id, data)
return comp return comp
def cache_and_get_instances(creator):
"""Cache instances in shared data.
Storing all instances as a list as legacy instances might be still present.
Args:
creator (Creator): Plugin which would like to get instances from host.
Returns:
List[]: list of all instances stored in metadata
"""
shared_key = "openpype.photoshop.instances"
if shared_key not in creator.collection_shared_data:
creator.collection_shared_data[shared_key] = creator.list_instances()
return creator.collection_shared_data[shared_key]

View file

@ -7,7 +7,7 @@ from openpype.pipeline import (
CreatorError, CreatorError,
legacy_io, legacy_io,
) )
from openpype.pipeline.create.creator_plugins import cache_and_get_instances from openpype.hosts.aftereffects.api.pipeline import cache_and_get_instances
class RenderCreator(Creator): class RenderCreator(Creator):
@ -29,10 +29,7 @@ class RenderCreator(Creator):
return resources.get_openpype_splash_filepath() return resources.get_openpype_splash_filepath()
def collect_instances(self): def collect_instances(self):
instances = cache_and_get_instances(self, for instance_data in cache_and_get_instances(self):
"openpype.aftereffects.instances",
self.host.list_instances)
for instance_data in instances.values():
# legacy instances have family=='render' or 'renderLocal', use them # legacy instances have family=='render' or 'renderLocal', use them
creator_id = (instance_data.get("creator_identifier") or creator_id = (instance_data.get("creator_identifier") or
instance_data.get("family", '').replace("Local", '')) instance_data.get("family", '').replace("Local", ''))

View file

@ -5,7 +5,7 @@ from openpype.pipeline import (
CreatedInstance, CreatedInstance,
legacy_io, legacy_io,
) )
from openpype.pipeline.create.creator_plugins import cache_and_get_instances from openpype.hosts.aftereffects.api.pipeline import cache_and_get_instances
class AEWorkfileCreator(AutoCreator): class AEWorkfileCreator(AutoCreator):
@ -18,10 +18,7 @@ class AEWorkfileCreator(AutoCreator):
return [] return []
def collect_instances(self): def collect_instances(self):
instances = cache_and_get_instances(self, for instance_data in cache_and_get_instances(self):
"openpype.aftereffects.instances",
self.host.list_instances)
for instance_data in instances.values():
creator_id = instance_data.get("creator_identifier") creator_id = instance_data.get("creator_identifier")
if creator_id == self.identifier: if creator_id == self.identifier:
subset_name = instance_data["subset"] subset_name = instance_data["subset"]