mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 05:14:40 +01:00
simplify api by giving access to 'collection_shared_data' property
This commit is contained in:
parent
ba2cb2d11d
commit
cad97d6d1d
3 changed files with 23 additions and 89 deletions
|
|
@ -28,9 +28,9 @@ def _cache_and_get_instances(creator):
|
|||
"""
|
||||
|
||||
shared_key = "openpype.traypublisher.instances"
|
||||
if not creator.collection_shared_data_contains(shared_key):
|
||||
creator.set_collection_shared_data(shared_key, list_instances())
|
||||
return creator.get_collection_shared_data(shared_key)
|
||||
if shared_key not in creator.collection_shared_data:
|
||||
creator.collection_shared_data[shared_key] = list_instances()
|
||||
return creator.collection_shared_data[shared_key]
|
||||
|
||||
|
||||
class HiddenTrayPublishCreator(HiddenCreator):
|
||||
|
|
|
|||
|
|
@ -884,14 +884,12 @@ class CreateContext:
|
|||
def reset_preparation(self):
|
||||
"""Prepare attributes that must be prepared/cleaned before reset."""
|
||||
|
||||
pass
|
||||
# Give ability to store shared data for collection phase
|
||||
self._collection_shared_data = {}
|
||||
|
||||
def reset_finalization(self):
|
||||
"""Cleanup of attributes after reset."""
|
||||
|
||||
pass
|
||||
# Stop access to collection shared data
|
||||
self._collection_shared_data = None
|
||||
|
||||
|
|
@ -1280,58 +1278,19 @@ class CreateContext:
|
|||
plugins.append(plugin)
|
||||
return plugins
|
||||
|
||||
def _validate_collection_shared_data(self):
|
||||
@property
|
||||
def collection_shared_data(self):
|
||||
"""Access to shared data that can be used during creator's collection.
|
||||
|
||||
Retruns:
|
||||
Dict[str, Any]: Shared data.
|
||||
|
||||
Raises:
|
||||
UnavailableSharedData: When called out of collection phase.
|
||||
"""
|
||||
|
||||
if self._collection_shared_data is None:
|
||||
raise UnavailableSharedData(
|
||||
"Accessed Collection shared data out of collection phase"
|
||||
)
|
||||
|
||||
def collection_shared_data_contains(self, key):
|
||||
"""Check if collection shared data are set.
|
||||
|
||||
Args:
|
||||
key (str): Key under which are shared data stored.
|
||||
|
||||
Retruns:
|
||||
bool: Key is already set.
|
||||
|
||||
Raises:
|
||||
UnavailableSharedData: When called out of collection phase.
|
||||
"""
|
||||
|
||||
self._validate_collection_shared_data()
|
||||
return key in self._collection_shared_data
|
||||
|
||||
def get_collection_shared_data(self, key, default=None):
|
||||
"""Receive shared data during collection phase.
|
||||
|
||||
Args:
|
||||
key (str): Key under which are shared data stored.
|
||||
default (Any): Default value if key is not set.
|
||||
|
||||
Returns:
|
||||
Any: Value stored under the key.
|
||||
|
||||
Raises:
|
||||
UnavailableSharedData: When called out of collection phase.
|
||||
"""
|
||||
|
||||
self._validate_collection_shared_data()
|
||||
return self._collection_shared_data.get(key, default)
|
||||
|
||||
def set_collection_shared_data(self, key, value):
|
||||
"""Store a value under collection shared data.
|
||||
|
||||
It is highly recommended to use very specific keys as creators may
|
||||
clash each other if simple keys are used.
|
||||
|
||||
Args:
|
||||
key (str): Key under which will shared data be stored.
|
||||
value (Any): Value to store.
|
||||
|
||||
Raises:
|
||||
UnavailableSharedData: When called out of collection phase.
|
||||
"""
|
||||
|
||||
self._validate_collection_shared_data()
|
||||
self._collection_shared_data[key] = value
|
||||
return self._collection_shared_data
|
||||
|
|
|
|||
|
|
@ -324,43 +324,18 @@ class BaseCreator:
|
|||
|
||||
return self.instance_attr_defs
|
||||
|
||||
def collection_shared_data_contains(self, key):
|
||||
"""Check if collection shared data are set.
|
||||
|
||||
Args:
|
||||
key (str): Key under which are shared data stored.
|
||||
@property
|
||||
def collection_shared_data(self):
|
||||
"""Access to shared data that can be used during creator's collection.
|
||||
|
||||
Retruns:
|
||||
bool: Key is already set.
|
||||
Dict[str, Any]: Shared data.
|
||||
|
||||
Raises:
|
||||
UnavailableSharedData: When called out of collection phase.
|
||||
"""
|
||||
|
||||
return self.create_context.collection_shared_data_contains(key)
|
||||
|
||||
def get_collection_shared_data(self, key, default=None):
|
||||
"""Receive shared data during collection phase.
|
||||
|
||||
Args:
|
||||
key (str): Key under which are shared data stored.
|
||||
default (Any): Default value if key is not set.
|
||||
|
||||
Returns:
|
||||
Any: Value stored under the key.
|
||||
"""
|
||||
|
||||
return self.create_context.get_collection_shared_data(key, default)
|
||||
|
||||
def set_collection_shared_data(self, key, value):
|
||||
"""Store a value under collection shared data.
|
||||
|
||||
It is highly recommended to use very specific keys as creators may
|
||||
clash each other if simple keys are used.
|
||||
|
||||
Args:
|
||||
key (str): Key under which will shared data be stored.
|
||||
value (Any): Value to store.
|
||||
"""
|
||||
|
||||
return self.create_context.set_collection_shared_data(key, value)
|
||||
return self.create_context.collection_shared_data
|
||||
|
||||
|
||||
class Creator(BaseCreator):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue