diff --git a/pype/plugins/standalonepublisher/publish/collect_matching_asset.py b/pype/plugins/standalonepublisher/publish/collect_matching_asset.py index 3575f581df..cd69eeefdc 100644 --- a/pype/plugins/standalonepublisher/publish/collect_matching_asset.py +++ b/pype/plugins/standalonepublisher/publish/collect_matching_asset.py @@ -1,5 +1,6 @@ import os import pyblish.api +from avalon import io from pprint import pformat @@ -15,12 +16,31 @@ class CollectMatchingAssetToInstance(pyblish.api.InstancePlugin): family = ["image"] def process(self, instance): - project_assets = instance.context.data["projectAssets"] source_file = os.path.basename(instance.data["source"]) - asset = next((project_assets[name] for name in project_assets - if name in source_file), None) + self.log.info("Looking for asset document for file \"{}\"".format( + instance.data["source"] + )) + project_assets = { + asset_doc["name"]: asset_doc + for asset_doc in io.find({"type": "asset"}) + } - if asset: - instance.data["asset"] = asset["name"] - instance.data["assetEntity"] = asset - self.log.info(f"Matching asset assigned: {pformat(asset)}") + matching_asset_doc = project_assets.get(source_file) + if matching_asset_doc is None: + for asset_doc in project_assets.values(): + if asset_doc["name"] in source_file: + matching_asset_doc = asset_doc + break + + if not matching_asset_doc: + # TODO better error message + raise AssertionError(( + "Filename does not contain any name of" + " asset documents in database." + )) + + instance.data["asset"] = matching_asset_doc["name"] + instance.data["assetEntity"] = matching_asset_doc + self.log.info( + f"Matching asset found: {pformat(matching_asset_doc)}" + ) diff --git a/pype/plugins/standalonepublisher/publish/collect_project_assets.py b/pype/plugins/standalonepublisher/publish/collect_project_assets.py deleted file mode 100644 index 1ca4144c81..0000000000 --- a/pype/plugins/standalonepublisher/publish/collect_project_assets.py +++ /dev/null @@ -1,21 +0,0 @@ -import pyblish.api -from avalon import io -from pprint import pformat - - -class CollectProjectAssets(pyblish.api.ContextPlugin): - """ - Collect all available project assets to context data. - """ - - label = "Collect Project Assets" - order = pyblish.api.CollectorOrder - 0.1 - hosts = ["standalonepublisher"] - - def process(self, context): - project_assets = { - asset_doc["name"]: asset_doc - for asset_doc in io.find({"type": "asset"}) - } - context.data["projectAssets"] = project_assets - self.log.debug(f"_ project_assets: {pformat(project_assets)}")