diff --git a/openpype/lib/avalon_context.py b/openpype/lib/avalon_context.py index 3e0e0c6ea62..c8e88610a52 100644 --- a/openpype/lib/avalon_context.py +++ b/openpype/lib/avalon_context.py @@ -273,7 +273,15 @@ def get_linked_asset_ids(asset_doc): input_links = asset_doc["data"].get("inputsLinks") or [] if input_links: - output = [item["_id"] for item in input_links] + for item in input_links: + # Backwards compatibility for "_id" key which was replaced with + # "id" + if "_id" in item: + link_id = item["_id"] + else: + link_id = item["id"] + output.append(link_id) + return output diff --git a/openpype/modules/default_modules/ftrack/event_handlers_server/event_sync_links.py b/openpype/modules/default_modules/ftrack/event_handlers_server/event_sync_links.py index 8c3d858a969..83132acd85b 100644 --- a/openpype/modules/default_modules/ftrack/event_handlers_server/event_sync_links.py +++ b/openpype/modules/default_modules/ftrack/event_handlers_server/event_sync_links.py @@ -113,7 +113,7 @@ def _update_in_links(self, session, ftrack_ids, project_id): continue links.append({ - "_id": ObjectId(link_mongo_id), + "id": ObjectId(link_mongo_id), "linkedBy": "ftrack", "type": "breakdown" }) diff --git a/openpype/modules/default_modules/ftrack/lib/avalon_sync.py b/openpype/modules/default_modules/ftrack/lib/avalon_sync.py index 9e22f80b1c7..3ba874281ac 100644 --- a/openpype/modules/default_modules/ftrack/lib/avalon_sync.py +++ b/openpype/modules/default_modules/ftrack/lib/avalon_sync.py @@ -1479,7 +1479,7 @@ def set_input_links(self): mongo_id = self.ftrack_avalon_mapper.get(ftrack_link_id) if mongo_id is not None: input_links.append({ - "_id": ObjectId(mongo_id), + "id": ObjectId(mongo_id), "linkedBy": "ftrack", "type": "breakdown" }) diff --git a/openpype/plugins/publish/integrate_inputlinks.py b/openpype/plugins/publish/integrate_inputlinks.py index e8a8b2296c1..f973dfc963b 100644 --- a/openpype/plugins/publish/integrate_inputlinks.py +++ b/openpype/plugins/publish/integrate_inputlinks.py @@ -81,7 +81,8 @@ def process(self, context): version_doc=instance.data["versionEntity"], ) - publishing.append(workfile) + if workfile is not None: + publishing.append(workfile) self.write_links_to_database(publishing) def add_link(self, link_type, input_id, version_doc): @@ -103,7 +104,7 @@ def add_link(self, link_type, input_id, version_doc): # future. link = OrderedDict() link["type"] = link_type - link["input"] = io.ObjectId(input_id) + link["id"] = io.ObjectId(input_id) link["linkedBy"] = "publish" if "inputLinks" not in version_doc["data"]: diff --git a/openpype/tools/assetlinks/widgets.py b/openpype/tools/assetlinks/widgets.py index 9a136462b08..22e8848a609 100644 --- a/openpype/tools/assetlinks/widgets.py +++ b/openpype/tools/assetlinks/widgets.py @@ -37,8 +37,13 @@ def set_version(self, version_doc): # inputs # for link in version_doc["data"].get("inputLinks", []): + # Backwards compatibility for "input" key used as "id" + if "id" not in link: + link_id = link["input"] + else: + link_id = link["id"] version = self.dbcon.find_one( - {"_id": link["input"], "type": "version"}, + {"_id": link_id, "type": "version"}, projection={"name": 1, "parent": 1} ) if not version: