diff --git a/openpype/hosts/testhost/plugins/create/auto_creator.py b/openpype/hosts/testhost/plugins/create/auto_creator.py index c3bbd5dd74..017e391dd6 100644 --- a/openpype/hosts/testhost/plugins/create/auto_creator.py +++ b/openpype/hosts/testhost/plugins/create/auto_creator.py @@ -26,14 +26,14 @@ class MyAutoCreator(AutoCreator): instance = CreatedInstance( self.family, subset_name, instance_data, self ) - self.create_context.add_instance(instance) + self._add_instance_to_context(instance) elif instance_data["family"] == self.identifier: instance_data["creator_identifier"] = self.identifier instance = CreatedInstance.from_existing( instance_data, self, attr_plugins ) - self.create_context.add_instance(instance) + self._add_instance_to_context(instance) def update_instances(self, update_list): pipeline.update_instances(update_list) @@ -83,4 +83,4 @@ class MyAutoCreator(AutoCreator): existing_instance.data["asset"] = asset_name existing_instance.data["task"] = task_name - return existing_instance + self._add_instance_to_context(existing_instance) diff --git a/openpype/hosts/testhost/plugins/create/test_creator_1.py b/openpype/hosts/testhost/plugins/create/test_creator_1.py index 1a6fc0cdf5..1b4b944824 100644 --- a/openpype/hosts/testhost/plugins/create/test_creator_1.py +++ b/openpype/hosts/testhost/plugins/create/test_creator_1.py @@ -24,26 +24,28 @@ class TestCreatorOne(Creator): instance = CreatedInstance( self.family, subset_name, instance_data, self ) - self.create_context.add_instance(instance) + self._add_instance_to_context(instance) elif instance_data["family"] == self.identifier: instance_data["creator_identifier"] = self.identifier instance = CreatedInstance.from_existing( instance_data, self, attr_plugins ) - self.create_context.add_instance(instance) + self._add_instance_to_context(instance) def update_instances(self, update_list): pipeline.update_instances(update_list) def remove_instances(self, instances): pipeline.remove_instances(instances) + for instance in instances: + self._remove_instance_from_context(instance) def create(self, subset_name, data, options=None): - avalon_instance = CreatedInstance(self.family, subset_name, data, self) - pipeline.HostContext.add_instance(avalon_instance.data_to_store()) - self.log.info(avalon_instance.data) - return avalon_instance + new_instance = CreatedInstance(self.family, subset_name, data, self) + pipeline.HostContext.add_instance(new_instance.data_to_store()) + self.log.info(new_instance.data) + self._add_instance_to_context(new_instance) def get_default_variants(self): return [ diff --git a/openpype/hosts/testhost/plugins/create/test_creator_2.py b/openpype/hosts/testhost/plugins/create/test_creator_2.py index a2e4ebb13b..b311e12a3e 100644 --- a/openpype/hosts/testhost/plugins/create/test_creator_2.py +++ b/openpype/hosts/testhost/plugins/create/test_creator_2.py @@ -15,10 +15,10 @@ class TestCreatorTwo(Creator): return "cube" def create(self, subset_name, data, options=None): - avalon_instance = CreatedInstance(self.family, subset_name, data, self) - pipeline.HostContext.add_instance(avalon_instance.data_to_store()) - self.log.info(avalon_instance.data) - return avalon_instance + new_instance = CreatedInstance(self.family, subset_name, data, self) + pipeline.HostContext.add_instance(new_instance.data_to_store()) + self.log.info(new_instance.data) + self._add_instance_to_context(new_instance) def collect_instances(self, attr_plugins): for instance_data in pipeline.list_instances(): @@ -29,20 +29,22 @@ class TestCreatorTwo(Creator): instance = CreatedInstance( self.family, subset_name, instance_data, self ) - self.create_context.add_instance(instance) + self._add_instance_to_context(instance) elif instance_data["family"] == self.identifier: instance_data["creator_identifier"] = self.identifier instance = CreatedInstance.from_existing( instance_data, self, attr_plugins ) - self.create_context.add_instance(instance) + self._add_instance_to_context(instance) def update_instances(self, update_list): pipeline.update_instances(update_list) def remove_instances(self, instances): pipeline.remove_instances(instances) + for instance in instances: + self._remove_instance_from_context(instance) def get_attribute_defs(self): output = [ diff --git a/openpype/pipeline/create/creator_plugins.py b/openpype/pipeline/create/creator_plugins.py index cd447c4f27..5cf6a6f991 100644 --- a/openpype/pipeline/create/creator_plugins.py +++ b/openpype/pipeline/create/creator_plugins.py @@ -69,6 +69,12 @@ class BaseCreator: self._log = logging.getLogger(self.__class__.__name__) return self._log + def _add_instance_to_context(self, instance): + self.create_context.creator_adds_instance(instance) + + def _remove_instance_from_context(self, instance): + self.create_context.creator_removed_instance(instance) + @abstractmethod def create(self, options=None): """Create new instance. @@ -97,12 +103,8 @@ class BaseCreator: Args: instance(list): Instance objects which should be removed. - - Returns: - bool: Instance was removed completely and is not required to call - host's implementation of removement. """ - return False + pass def get_icon(self): """Icon of creator (family).