added links query between processing created ids and updates

This commit is contained in:
iLLiCiTiT 2021-11-22 15:47:01 +01:00
parent 0891e3c0a7
commit ddd1470fb5

View file

@ -1170,6 +1170,33 @@ class SyncEntitiesFactory:
entity
)
def _get_input_links(self, ftrack_ids):
tupled_ids = tuple(ftrack_ids)
mapping_by_to_id = {
ftrack_id: set()
for ftrack_id in tupled_ids
}
ids_len = len(tupled_ids)
chunk_size = int(5000 / ids_len)
all_links = []
for idx in range(0, ids_len, chunk_size):
entity_ids_joined = join_query_keys(
tupled_ids[idx:idx + chunk_size]
)
all_links.extend(self.session.query((
"select from_id, to_id from"
" TypedContextLink where to_id in ({})"
).format(entity_ids_joined)).all())
for context_link in all_links:
to_id = context_link["to_id"]
from_id = context_link["from_id"]
if from_id == to_id:
continue
mapping_by_to_id[to_id].add(from_id)
return mapping_by_to_id
def prepare_ftrack_ent_data(self):
not_set_ids = []
for ftrack_id, entity_dict in self.entities_dict.items():
@ -1435,6 +1462,28 @@ class SyncEntitiesFactory:
for child_id in entity_dict["children"]:
children_queue.append(child_id)
def set_input_links(self):
ftrack_ids = set(self.create_ftrack_ids) | set(self.update_ftrack_ids)
input_links_by_ftrack_id = self._get_input_links(ftrack_ids)
for ftrack_id in ftrack_ids:
input_links = []
final_entity = self.entities_dict[ftrack_id]["final_entity"]
final_entity["data"]["inputLinks"] = input_links
link_ids = input_links_by_ftrack_id[ftrack_id]
if not link_ids:
continue
for ftrack_link_id in link_ids:
mongo_id = self.ftrack_avalon_mapper.get(ftrack_link_id)
if mongo_id is not None:
input_links.append({
"_id": ObjectId(mongo_id),
"linkedBy": "ftrack",
"type": "breakdown"
})
def prepare_changes(self):
self.log.debug("* Preparing changes for avalon/ftrack")
hierarchy_changing_ids = []
@ -1811,6 +1860,8 @@ class SyncEntitiesFactory:
if ftrack_id not in self.ftrack_avalon_mapper:
self.create_avalon_entity(ftrack_id)
self.set_input_links()
unarchive_writes = []
for item in self.unarchive_list:
mongo_id = item["_id"]