mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
handle missing ftrack id in more cases
This commit is contained in:
parent
3420c68796
commit
72f84c52ba
1 changed files with 64 additions and 8 deletions
|
|
@ -199,8 +199,10 @@ class SyncToAvalonEvent(BaseEvent):
|
|||
if proj:
|
||||
ftrack_id = proj["data"].get("ftrackId")
|
||||
if ftrack_id is None:
|
||||
ftrack_id = self._update_project_ftrack_id()
|
||||
proj["data"]["ftrackId"] = ftrack_id
|
||||
self.handle_missing_ftrack_id(proj)
|
||||
ftrack_id = proj["data"]["ftrackId"]
|
||||
self._avalon_ents_by_ftrack_id[ftrack_id] = proj
|
||||
|
||||
self._avalon_ents_by_ftrack_id[ftrack_id] = proj
|
||||
for ent in ents:
|
||||
ftrack_id = ent["data"].get("ftrackId")
|
||||
|
|
@ -209,15 +211,56 @@ class SyncToAvalonEvent(BaseEvent):
|
|||
self._avalon_ents_by_ftrack_id[ftrack_id] = ent
|
||||
return self._avalon_ents_by_ftrack_id
|
||||
|
||||
def _update_project_ftrack_id(self):
|
||||
ftrack_id = self.cur_project["id"]
|
||||
def handle_missing_ftrack_id(self, doc):
|
||||
ftrack_id = doc["data"].get("ftrackId")
|
||||
if ftrack_id is not None:
|
||||
return
|
||||
|
||||
if doc["type"] == "project":
|
||||
ftrack_id = self.cur_project["id"]
|
||||
|
||||
self.dbcon.update_one(
|
||||
{"type": "project"},
|
||||
{"$set": {"data.ftrackId": ftrack_id}}
|
||||
)
|
||||
|
||||
doc["data"]["ftrackId"] = ftrack_id
|
||||
return
|
||||
|
||||
if doc["type"] != "asset":
|
||||
return
|
||||
|
||||
doc_parents = doc.get("data", {}).get("parents")
|
||||
if doc_parents is None:
|
||||
return
|
||||
|
||||
entities = self.process_session.query((
|
||||
"select id, link from TypedContext"
|
||||
" where project_id is \"{}\" and name is \"{}\""
|
||||
).format(self.cur_project["id"], doc["name"])).all()
|
||||
matching_entity = None
|
||||
for entity in entities:
|
||||
parents = []
|
||||
for item in entity["link"]:
|
||||
if item["id"] == entity["id"]:
|
||||
break
|
||||
low_type = item["type"].lower()
|
||||
if low_type == "typedcontext":
|
||||
parents.append(item["name"])
|
||||
if doc_parents == parents:
|
||||
matching_entity = entity
|
||||
break
|
||||
|
||||
if matching_entity is None:
|
||||
return
|
||||
|
||||
ftrack_id = matching_entity["id"]
|
||||
self.dbcon.update_one(
|
||||
{"type": "project"},
|
||||
{"_id": doc["_id"]},
|
||||
{"$set": {"data.ftrackId": ftrack_id}}
|
||||
)
|
||||
|
||||
return ftrack_id
|
||||
self._avalon_ents_by_ftrack_id[ftrack_id] = doc
|
||||
|
||||
@property
|
||||
def avalon_subsets_by_parents(self):
|
||||
|
|
@ -857,7 +900,14 @@ class SyncToAvalonEvent(BaseEvent):
|
|||
if vis_par is None:
|
||||
vis_par = proj["_id"]
|
||||
parent_ent = self.avalon_ents_by_id[vis_par]
|
||||
parent_ftrack_id = parent_ent["data"]["ftrackId"]
|
||||
|
||||
parent_ftrack_id = parent_ent["data"].get("ftrackId")
|
||||
if parent_ftrack_id is None:
|
||||
self.handle_missing_ftrack_id(parent_ent)
|
||||
parent_ftrack_id = parent_ent["data"].get("ftrackId")
|
||||
if parent_ftrack_id is None:
|
||||
continue
|
||||
|
||||
parent_ftrack_ent = self.ftrack_ents_by_id.get(
|
||||
parent_ftrack_id
|
||||
)
|
||||
|
|
@ -2128,7 +2178,13 @@ class SyncToAvalonEvent(BaseEvent):
|
|||
vis_par = avalon_ent["parent"]
|
||||
|
||||
parent_ent = self.avalon_ents_by_id[vis_par]
|
||||
parent_ftrack_id = parent_ent["data"]["ftrackId"]
|
||||
parent_ftrack_id = parent_ent["data"].get("ftrackId")
|
||||
if parent_ftrack_id is None:
|
||||
self.handle_missing_ftrack_id(parent_ent)
|
||||
parent_ftrack_id = parent_ent["data"].get("ftrackId")
|
||||
if parent_ftrack_id is None:
|
||||
continue
|
||||
|
||||
if parent_ftrack_id not in entities_dict:
|
||||
entities_dict[parent_ftrack_id] = {
|
||||
"children": [],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue