diff --git a/pype/ftrack/actions/ft_utils.py b/pype/ftrack/actions/ft_utils.py deleted file mode 100644 index f6f9bfc59b..0000000000 --- a/pype/ftrack/actions/ft_utils.py +++ /dev/null @@ -1,430 +0,0 @@ -import os -import operator -import ftrack_api -import collections -import sys -import json -import base64 - - -ignore_me = True -# sys.path.append(os.path.dirname(os.path.dirname(__file__))) -# from ftrack_kredenc.lucidity.vendor import yaml -# from ftrack_kredenc import lucidity -# -# -# def get_ftrack_connect_path(): -# -# ftrack_connect_root = os.path.abspath(os.getenv('FTRACK_CONNECT_PACKAGE')) -# -# return ftrack_connect_root -# -# -# def from_yaml(filepath): -# ''' Parse a Schema from a YAML file at the given *filepath*. -# ''' -# with open(filepath, 'r') as f: -# data = yaml.safe_load(f) -# return data -# -# -# def get_task_enviro(entity, environment=None): -# -# context = get_context(entity) -# -# if not environment: -# environment = {} -# -# for key in context: -# os.environ[key.upper()] = context[key]['name'] -# environment[key.upper()] = context[key]['name'] -# -# if key == 'Project': -# os.putenv('PROJECT_ROOT', context[key]['root']) -# os.environ['PROJECT_ROOT'] = context[key]['root'] -# environment['PROJECT_ROOT'] = context[key]['root'] -# print('PROJECT_ROOT: ' + context[key]['root']) -# print(key + ': ' + context[key]['name']) -# -# return environment -# -# -# def get_entity(): -# decodedEventData = json.loads( -# base64.b64decode( -# os.environ.get('FTRACK_CONNECT_EVENT') -# ) -# ) -# -# entity = decodedEventData.get('selection')[0] -# -# if entity['entityType'] == 'task': -# return ftrack_api.Task(entity['entityId']) -# else: -# return None -# -# -# def set_env_vars(): -# -# entity = get_entity() -# -# if entity: -# if not os.environ.get('project_root'): -# enviro = get_task_enviro(entity) -# -# print(enviro) -# -# -def get_context(entity): - - entityName = entity['name'] - entityId = entity['id'] - entityType = entity.entity_type - entityDescription = entity['description'] - - print(100*"*") - for k in entity['ancestors']: - print(k['name']) - print(100*"*") - hierarchy = entity.getParents() - - ctx = collections.OrderedDict() - - if entity.get('entityType') == 'task' and entityType == 'Task': - taskType = entity.getType().getName() - entityDic = { - 'type': taskType, - 'name': entityName, - 'id': entityId, - 'description': entityDescription - } - elif entity.get('entityType') == 'task': - entityDic = { - 'name': entityName, - 'id': entityId, - 'description': entityDescription - } - - ctx[entityType] = entityDic - - folder_counter = 0 - - for ancestor in hierarchy: - tempdic = {} - if isinstance(ancestor, ftrack_api.Component): - # Ignore intermediate components. - continue - - tempdic['name'] = ancestor.getName() - tempdic['id'] = ancestor.getId() - - try: - objectType = ancestor.getObjectType() - tempdic['description'] = ancestor.getDescription() - except AttributeError: - objectType = 'Project' - tempdic['description'] = '' - - if objectType == 'Asset Build': - tempdic['type'] = ancestor.getType().get('name') - objectType = objectType.replace(' ', '_') - elif objectType == 'Project': - tempdic['code'] = tempdic['name'] - tempdic['name'] = ancestor.get('fullname') - tempdic['root'] = ancestor.getRoot() - - if objectType == 'Folder': - objectType = objectType + str(folder_counter) - folder_counter += 1 - ctx[objectType] = tempdic - - return ctx - - -def getNewContext(entity): - - parents = [] - item = entity - while True: - item = item['parent'] - if not item: - break - parents.append(item) - - ctx = collections.OrderedDict() - - entityDic = { - 'name': entity['name'], - 'id': entity['id'], - } - try: - entityDic['type'] = entity['type']['name'] - except: - pass - - ctx[entity['object_type']['name']] = entityDic - - print(100*"-") - for p in parents: - print(p) - # add all parents to the context - for parent in parents: - tempdic = {} - if not parent.get('project_schema'): - tempdic = { - 'name': parent['full_name'], - 'code': parent['name'], - 'id': parent['id'], - } - tempdic = { - 'name': parent['name'], - 'id': parent['id'], - } - object_type = parent['object_type']['name'] - - ctx[object_type] = tempdic - - # add project to the context - project = entity['project'] - ctx['Project'] = { - 'name': project['full_name'], - 'code': project['name'], - 'id': project['id'], - 'root': project['root'], - }, - - return ctx -# -# -# def get_frame_range(): -# -# entity = get_entity() -# entityType = entity.getObjectType() -# environment = {} -# -# if entityType == 'Task': -# try: -# environment['FS'] = str(int(entity.getFrameStart())) -# except Exception: -# environment['FS'] = '1' -# try: -# environment['FE'] = str(int(entity.getFrameEnd())) -# except Exception: -# environment['FE'] = '1' -# else: -# try: -# environment['FS'] = str(int(entity.getFrameStart())) -# except Exception: -# environment['FS'] = '1' -# try: -# environment['FE'] = str(int(entity.getFrameEnd())) -# except Exception: -# environment['FE'] = '1' -# -# -# def get_asset_name_by_id(id): -# for t in ftrack_api.getAssetTypes(): -# try: -# if t.get('typeid') == id: -# return t.get('name') -# except: -# return None -# -# -# def get_status_by_name(name): -# statuses = ftrack_api.getTaskStatuses() -# -# result = None -# for s in statuses: -# if s.get('name').lower() == name.lower(): -# result = s -# -# return result -# -# -# def sort_types(types): -# data = {} -# for t in types: -# data[t] = t.get('sort') -# -# data = sorted(data.items(), key=operator.itemgetter(1)) -# results = [] -# for item in data: -# results.append(item[0]) -# -# return results -# -# -# def get_next_task(task): -# shot = task.getParent() -# tasks = shot.getTasks() -# -# types_sorted = sort_types(ftrack_api.getTaskTypes()) -# -# next_types = None -# for t in types_sorted: -# if t.get('typeid') == task.get('typeid'): -# try: -# next_types = types_sorted[(types_sorted.index(t) + 1):] -# except: -# pass -# -# for nt in next_types: -# for t in tasks: -# if nt.get('typeid') == t.get('typeid'): -# return t -# -# return None -# -# -# def get_latest_version(versions): -# latestVersion = None -# if len(versions) > 0: -# versionNumber = 0 -# for item in versions: -# if item.get('version') > versionNumber: -# versionNumber = item.getVersion() -# latestVersion = item -# return latestVersion -# -# -# def get_thumbnail_recursive(task): -# if task.get('thumbid'): -# thumbid = task.get('thumbid') -# return ftrack_api.Attachment(id=thumbid) -# if not task.get('thumbid'): -# parent = ftrack_api.Task(id=task.get('parent_id')) -# return get_thumbnail_recursive(parent) -# -# -# # paths_collected -# -# def getFolderHierarchy(context): -# '''Return structure for *hierarchy*. -# ''' -# -# hierarchy = [] -# for key in reversed(context): -# hierarchy.append(context[key]['name']) -# print(hierarchy) -# -# return os.path.join(*hierarchy[1:-1]) -# -# -def tweakContext(context, include=False): - - for key in context: - if key == 'Asset Build': - context['Asset_Build'] = context.pop(key) - key = 'Asset_Build' - description = context[key].get('description') - if description: - context[key]['description'] = '_' + description - - hierarchy = [] - for key in reversed(context): - hierarchy.append(context[key]['name']) - - if include: - hierarchy = os.path.join(*hierarchy[1:]) - else: - hierarchy = os.path.join(*hierarchy[1:-1]) - - context['ft_hierarchy'] = hierarchy - - -def getSchema(entity): - - project = entity['project'] - schema = project['project_schema']['name'] - - tools = os.path.abspath(os.environ.get('studio_tools')) - - schema_path = os.path.join(tools, 'studio', 'templates', (schema + '_' + project['name'] + '.yml')) - if not os.path.exists(schema_path): - schema_path = os.path.join(tools, 'studio', 'templates', (schema + '.yml')) - if not os.path.exists(schema_path): - schema_path = os.path.join(tools, 'studio', 'templates', 'default.yml') - - schema = lucidity.Schema.from_yaml(schema_path) - - print(schema_path) - return schema - - -# def getAllPathsYaml(entity, root=''): -# -# if isinstance(entity, str) or isinstance(entity, unicode): -# entity = ftrack_api.Task(entity) -# -# context = get_context(entity) -# -# tweakContext(context) -# -# schema = getSchema(entity) -# -# paths = schema.format_all(context) -# paths_collected = [] -# -# for path in paths: -# tweak_path = path[0].replace(" ", '_').replace('\'', '').replace('\\', '/') -# -# tempPath = os.path.join(root, tweak_path) -# path = list(path) -# path[0] = tempPath -# paths_collected.append(path) -# -# return paths_collected -# - -def getPathsYaml(entity, templateList=None, root=None, **kwargs): - ''' - version=None - ext=None - item=None - family=None - subset=None - ''' - - context = get_context(entity) - - if entity.entity_type != 'Task': - tweakContext(context, include=True) - else: - tweakContext(context) - - context.update(kwargs) - - host = sys.executable.lower() - - ext = None - if not context.get('ext'): - if "nuke" in host: - ext = 'nk' - elif "maya" in host: - ext = 'ma' - elif "houdini" in host: - ext = 'hip' - if ext: - context['ext'] = ext - - if not context.get('subset'): - context['subset'] = '' - else: - context['subset'] = '_' + context['subset'] - - schema = getSchema(entity) - paths = schema.format_all(context) - paths_collected = set([]) - for temp_mask in templateList: - for path in paths: - if temp_mask in path[1].name: - path = path[0].lower().replace(" ", '_').replace('\'', '').replace('\\', '/') - path_list = path.split('/') - if path_list[0].endswith(':'): - path_list[0] = path_list[0] + os.path.sep - path = os.path.join(*path_list) - temppath = os.path.join(root, path) - paths_collected.add(temppath) - - return list(paths_collected)