From 6e0fc1771d73004cd0b13333de2baa5b182b3c17 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Tue, 4 Dec 2018 15:50:20 +0100 Subject: [PATCH] Top entity is not pushed to Avalon as asset and error message is full now --- pype/ftrack/actions/action_syncToAvalon.py | 21 +++++++++------------ pype/ftrack/ftrack_utils.py | 13 +++++++------ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/pype/ftrack/actions/action_syncToAvalon.py b/pype/ftrack/actions/action_syncToAvalon.py index 9b8176a088..343df2e702 100644 --- a/pype/ftrack/actions/action_syncToAvalon.py +++ b/pype/ftrack/actions/action_syncToAvalon.py @@ -233,10 +233,12 @@ class SyncToAvalon(BaseAction): ## ----- ASSETS ------ # Presets: - data = ftrack_utils.get_data(self, entity, session, self.custom_attributes) - silo = entity['name'] - if len(data['parents']) > 0: + + # return if entity is silo + if len(data['parents']) == 0: + return + else: silo = data['parents'][0] os.environ['AVALON_SILO'] = silo @@ -263,16 +265,11 @@ class SyncToAvalon(BaseAction): # Raise error if it seems to be different ent. with same name else: - update = False aD = avalon_asset['data'] - check_attr = ['ftrackId', 'visualParent', 'parents'] - for attr in check_attr: - if attr not in aD: update = True - - if update is False: - for attr in check_attr: - if (avalon_asset['data'][attr] != data[attr]): - raise ValueError('In Avalon DB already exists entity with name <{}>!'.format(name)) + # check_attr = ['parents', 'ftrackId', 'visualParent'] + if (avalon_asset['data']['parents'] != data['parents'] or + avalon_asset['silo'] != silo): + raise ValueError('In Avalon DB already exists entity with name "{0}"'.format(name)) elif avalon_asset['name'] != entity['name']: raise ValueError('You can\'t change name {} to {}, avalon DB won\'t work properly - please create new asset'.format(avalon_asset['name'], name)) diff --git a/pype/ftrack/ftrack_utils.py b/pype/ftrack/ftrack_utils.py index 10a1ee8ef3..66d739829b 100644 --- a/pype/ftrack/ftrack_utils.py +++ b/pype/ftrack/ftrack_utils.py @@ -49,16 +49,17 @@ def get_data(parent, entity, session, custom_attributes): # Get list of parents without project parents = [] - for i in range(1, len(entity['link'])-1): - tmp = session.get(entity['link'][i]['type'], entity['link'][i]['id']) - parents.append(tmp) - folderStruct = [] + for i in range(1, len(entity['link'])-1): + parEnt = session.get(entity['link'][i]['type'], entity['link'][i]['id']) + parName = parEnt['name'] + folderStruct.append(parName) + if i > 1: + parents.append(parEnt) + parentId = None for parent in parents: - parName = parent['name'] - folderStruct.append(parName) parentId = io.find_one({'type': 'asset', 'name': parName})['_id'] if parent['parent'].entity_type != 'project' and parentId is None: parent.importToAvalon(parent)