From 7d56929ffff8655a673dc35bd6332b13e6b616a2 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 6 May 2021 21:00:05 +0200 Subject: [PATCH] it is possible to get update changes for mongo from asset item --- .../project_manager/project_manager/model.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/openpype/tools/project_manager/project_manager/model.py b/openpype/tools/project_manager/project_manager/model.py index 5ed09bc677..9d26a1c96e 100644 --- a/openpype/tools/project_manager/project_manager/model.py +++ b/openpype/tools/project_manager/project_manager/model.py @@ -1058,6 +1058,42 @@ class AssetItem(BaseItem): doc_data[key] = value return doc + + def update_data(self): + if not self.mongo_id: + return {} + + document = self.to_doc() + + changes = {} + + for key, value in document.items(): + if key in ("data", "_id"): + continue + + if ( + key in self._origin_asset_doc + and self._origin_asset_doc[key] == value + ): + continue + + changes[key] = value + + if "data" not in self._origin_asset_doc: + changes["data"] = document["data"] + else: + origin_data = self._origin_asset_doc["data"] + + for key, value in document["data"].items(): + if key in origin_data and origin_data[key] == value: + continue + _key = "data.{}".format(key) + changes[_key] = value + + if changes: + return {"$set": changes} + return {} + @classmethod def data_from_doc(cls, asset_doc): data = {