From 846777bff00231031ef7ee86cbb5b3602c75e360 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 17 Jan 2020 12:40:35 +0100 Subject: [PATCH 1/3] update all avalon ent data if ftrack id was updated --- pype/ftrack/events/event_sync_to_avalon.py | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/pype/ftrack/events/event_sync_to_avalon.py b/pype/ftrack/events/event_sync_to_avalon.py index b268372bd6..3f625da1ac 100644 --- a/pype/ftrack/events/event_sync_to_avalon.py +++ b/pype/ftrack/events/event_sync_to_avalon.py @@ -1468,9 +1468,50 @@ class SyncToAvalonEvent(BaseEvent): "data.entityType": entity_type } }) + + avalon_ent_by_name["data"]["ftrackId"] = ftrack_id + avalon_ent_by_name["data"]["entityType"] = entity_type + self._avalon_ents_by_ftrack_id[ftrack_id] = ( avalon_ent_by_name ) + if self._avalon_ents_by_parent_id: + found = None + for _parent_id_, _entities_ in ( + self._avalon_ents_by_parent_id.items() + ): + for _idx_, entity in enumerate(_entities_): + if entity["_id"] == avalon_ent_by_name["_id"]: + found = (_parent_id_, _idx_) + break + + if found: + break + + if found: + _parent_id_, _idx_ = found + self._avalon_ents_by_parent_id[_parent_id_][ + _idx_] = avalon_ent_by_name + + if self._avalon_ents_by_id: + self._avalon_ents_by_id[avalon_ent_by_name["_id"]] = ( + avalon_ent_by_name + ) + + if self._avalon_ents_by_name: + self._avalon_ents_by_name[name] = avalon_ent_by_name + + if self._avalon_ents: + found = None + for _idx_, _ent_ in enumerate(self._avalon_ents): + if _ent_["_id"] != avalon_ent_by_name["_id"]: + continue + found = _idx_ + break + + if found is not None: + self._avalon_ents[found] = avalon_ent_by_name + pop_out_ents.append(ftrack_id) continue From 7029588793f013d751cb3d3d8c5bbd40e106e002 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 17 Jan 2020 15:03:26 +0100 Subject: [PATCH 2/3] correct setting --- pype/ftrack/events/event_sync_to_avalon.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pype/ftrack/events/event_sync_to_avalon.py b/pype/ftrack/events/event_sync_to_avalon.py index 3f625da1ac..23284a2ae6 100644 --- a/pype/ftrack/events/event_sync_to_avalon.py +++ b/pype/ftrack/events/event_sync_to_avalon.py @@ -1503,14 +1503,16 @@ class SyncToAvalonEvent(BaseEvent): if self._avalon_ents: found = None - for _idx_, _ent_ in enumerate(self._avalon_ents): + project, entities = self._avalon_ents + for _idx_, _ent_ in enumerate(entities): if _ent_["_id"] != avalon_ent_by_name["_id"]: continue found = _idx_ break if found is not None: - self._avalon_ents[found] = avalon_ent_by_name + entities[found] = avalon_ent_by_name + self._avalon_ents = project, entities pop_out_ents.append(ftrack_id) continue From 40cae28e76154385b2543f5c02c7b84877e26e3d Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 17 Jan 2020 16:05:59 +0100 Subject: [PATCH 3/3] sync to avalon actions return information about not available avalon_mongo_id custom attribute(only for project) --- pype/ftrack/actions/action_sync_to_avalon.py | 5 ++++- pype/ftrack/events/action_sync_to_avalon.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pype/ftrack/actions/action_sync_to_avalon.py b/pype/ftrack/actions/action_sync_to_avalon.py index 01d0b866bf..d2fcfb372f 100644 --- a/pype/ftrack/actions/action_sync_to_avalon.py +++ b/pype/ftrack/actions/action_sync_to_avalon.py @@ -70,7 +70,10 @@ class SyncToAvalonLocal(BaseAction): ft_project_name = in_entities[0]["project"]["full_name"] try: - self.entities_factory.launch_setup(ft_project_name) + output = self.entities_factory.launch_setup(ft_project_name) + if output is not None: + return output + time_1 = time.time() self.entities_factory.set_cutom_attributes() diff --git a/pype/ftrack/events/action_sync_to_avalon.py b/pype/ftrack/events/action_sync_to_avalon.py index 9f9deeab95..79ab1b5f7a 100644 --- a/pype/ftrack/events/action_sync_to_avalon.py +++ b/pype/ftrack/events/action_sync_to_avalon.py @@ -105,7 +105,10 @@ class SyncToAvalonServer(BaseAction): ft_project_name = in_entities[0]["project"]["full_name"] try: - self.entities_factory.launch_setup(ft_project_name) + output = self.entities_factory.launch_setup(ft_project_name) + if output is not None: + return output + time_1 = time.time() self.entities_factory.set_cutom_attributes()