def get_shot_task_from_path(file_path, project, mode="working", sep="/"): template_elements = get_shot_template_folders(project, mode, sep) elements = get_path_folders(project, file_path, mode, sep) if len(elements) != len(template_elements): tree = get_tree_from_project(project) template = get_shot_path_template(tree, mode) raise WrongPathFormatException("%s doesn't match %s" % (file_path, template)) data_names = extract_variable_values_from_path(elements, template_elements) shot = guess_shot( project, data_names.get(PathTokens.EPISODE, ""), data_names.get(PathTokens.SEQUENCE, ""), data_names.get(PathTokens.SHOT, ""), ) task_type = guess_task_type( data_names.get(PathTokens.DEPARTMENT, ""), data_names.get(PathTokens.TASK_TYPE, ""), ) task = guess_task(shot, task_type, data_names.get(PathTokens.TASK, "")) return task.serialize()
def guess_shot(project, episode_name, sequence_name, shot_name): episode_id = None if len(episode_name) > 0: episode = Entity.get_by( name=episode_name, entity_type_id=shots_service.get_episode_type()["id"], project_id=project["id"], ) if episode is not None: episode_id = episode.id sequence_id = None if len(sequence_name) > 0: sequence = Entity.get_by( name=sequence_name, entity_type_id=shots_service.get_sequence_type()["id"], parent_id=episode_id, project_id=project["id"], ) if sequence is not None: sequence_id = sequence.id else: sequence_id = None if len(shot_name) > 0: shot = Entity.get_by( name=shot_name, entity_type_id=shots_service.get_shot_type()["id"], parent_id=sequence_id, project_id=project["id"], ) else: raise WrongPathFormatException("Shot name was not found in given path") return shot
def guess_task(entity, task_type, task_name): if entity is None: raise WrongPathFormatException("No asset or shot found in given path.") criterions = {"entity_id": entity.id, "task_type_id": task_type.id} if len(task_name) > 0: criterions["name"] = task_name task = Task.get_by(**criterions) if task is None: raise TaskNotFoundException else: return task
def guess_asset(project, asset_type_name, asset_name): asset_type_id = None if len(asset_type_name) > 0: asset_type = EntityType.get_by(name=asset_type_name) if asset_type is not None: asset_type_id = asset_type.id if len(asset_name) > 0: asset = Entity.get_by(name=asset_name, entity_type_id=asset_type_id, project_id=project["id"]) else: raise WrongPathFormatException( "Asset name was not found in given path.") return asset