Source code for helga.general.directory_wizard.lib.directory_creator

"""
directory_creator
==========================================

Module to create directories.

-----------------------
"""







#Import
#------------------------------------------------------------------
#python
import sys
import os
import functools
import logging
#PySide
from PySide import QtGui
from PySide import QtCore
from PySide import QtUiTools


#Import variable
do_reload = True

#global_variables
from helga.general.setup.global_variables import global_variables
if(do_reload):reload(global_variables)

#global_functions
from helga.general.setup.global_functions import global_functions
if(do_reload):reload(global_functions)











#Globals
#------------------------------------------------------------------

CHARACTER_DIRECTORY_LIST = ['model', ['export'], 'rig', ['last_published'], 'sculpt', ['export'], 'textures', 'temp']
"""Helga character directory structure"""

PROP_DIRECTORY_LIST = ['model', ['export'], 'photoscan', ['masks', 'out', 'photos', 'nuke'], 'rig', ['last_published'], 'sculpt', ['export'], 'textures', 'temp']
"""Helga prop directory structure"""

SHOT_DIRECTORY_LIST = ['animation', 'lighting', 'fx', ['cloth']]
"""Helga shot directory structure"""

COMP_DIRECTORY_LIST = ['2d_render', '3d_render', 'nuke', 'ae', 'mattepainting', 'footage', 'temp']
"""Helga comp directory structure"""

PHOTOSCAN_DIRECTORY_LIST = ['photos', 'masks', 'nuke', 'photoscan', ['out'], 'temp']
"""Helga photoscan directory structure"""















#DirectoryCreator class
#------------------------------------------------------------------

class DirectoryCreator(object):
    
    #Constructor
    def __init__(self,
[docs] asset_name, root_directory, logging_level = logging.DEBUG): #super class init super(DirectoryCreator, self).__init__() #asset_name self.asset_name = asset_name #root_directory self.root_directory = root_directory #asset_directory self.asset_directory = os.path.join(self.root_directory, self.asset_name) #directory_list self.directory_list = [] #directory_type self.directory_type = 'base' #logger #------------------------------------------------------------------ self.logger = logging.getLogger(self.__class__.__name__) self.logging_level = logging_level self.logger.setLevel(self.logging_level) #Create Methods #------------------------------------------------------------------ #------------------------------------------------------------------ #create_directories def create_directories(self, name_list = None, parent_directory = None): """ Recurse self.directory_list and create directories. """
[docs] #name_list None if (name_list is None): name_list = self.directory_list #parent_directory None if (parent_directory is None): parent_directory = self.asset_directory #create parent_directory if non existant if not(os.path.isdir(parent_directory)): #create directory os.makedirs(parent_directory) #iterate name_list for index, name_entry in enumerate(name_list): #if directory_entry is string if(isinstance(name_entry, str)): #target_directory target_directory = os.path.join(parent_directory, name_entry) #create directory os.makedirs(target_directory) #log self.logger.debug(target_directory) #if directory_entry is list recurse elif(isinstance(name_entry, list)): #new_parent_directory new_parent_directory = os.path.join(parent_directory, name_list[index-1]) #create_directories self.create_directories(name_entry, new_parent_directory) #Getter & Setter #------------------------------------------------------------------ #------------------------------------------------------------------ #get_asset_directory def get_asset_directory(self): """ Return self.asset_directory """
[docs] return self.asset_directory #get_directory_type def get_directory_type(self): """ Return self.directory_type """
[docs] return self.directory_type #get_directories_string def get_directories_string(self, name_list = None, tabs = ''): """ Return string representation of directory_list """
[docs] #name_list None if (name_list is None): name_list = [self.asset_name, self.directory_list] #directories_string directories_string = '' #iterate name_list for index, name_entry in enumerate(name_list): #if directory_entry is string if(isinstance(name_entry, str)): #name_entry_string if(tabs): name_entry_string = '\n' +tabs +'/' + name_entry else: #first entry if(name_entry == self.asset_name): #name_entry_header name_entry_header = '-----------------------------------------------' name_entry_header += '\nDirectories: {0}'.format(self.get_directory_type()) name_entry_header += '\n-----------------------------------------------\n\n' #name_entry_string name_entry_string = name_entry_header +'/' + name_entry #add directories_string += name_entry_string #if directory_entry is list recurse elif(isinstance(name_entry, list)): #get_directories_string directories_string += self.get_directories_string(name_entry, tabs + ' ') return directories_string #CharacterDirectoryCreator class #------------------------------------------------------------------ class CharacterDirectoryCreator(DirectoryCreator): #Constructor def __init__(self,
[docs] asset_name, root_directory, logging_level = logging.DEBUG): #super class init super(CharacterDirectoryCreator, self).__init__(asset_name, root_directory) #directory_list #------------------------------------------------------------------ self.directory_list = CHARACTER_DIRECTORY_LIST self.directory_type = 'character' #logger #------------------------------------------------------------------ self.logger = logging.getLogger(self.__class__.__name__) self.logging_level = logging_level self.logger.setLevel(self.logging_level) #PropDirectoryCreator class #------------------------------------------------------------------ class PropDirectoryCreator(DirectoryCreator): #Constructor def __init__(self,
[docs] asset_name, root_directory, logging_level = logging.DEBUG): #super class init super(PropDirectoryCreator, self).__init__(asset_name, root_directory) #directory_list #------------------------------------------------------------------ self.directory_list = PROP_DIRECTORY_LIST self.directory_type = 'prop' #logger #------------------------------------------------------------------ self.logger = logging.getLogger(self.__class__.__name__) self.logging_level = logging_level self.logger.setLevel(self.logging_level) #ShotDirectoryCreator class #------------------------------------------------------------------ class ShotDirectoryCreator(DirectoryCreator): #Constructor def __init__(self,
[docs] asset_name, root_directory, logging_level = logging.DEBUG): #super class init super(ShotDirectoryCreator, self).__init__(asset_name, root_directory) #directory_list #------------------------------------------------------------------ self.directory_list = SHOT_DIRECTORY_LIST self.directory_type = 'shot' #logger #------------------------------------------------------------------ self.logger = logging.getLogger(self.__class__.__name__) self.logging_level = logging_level self.logger.setLevel(self.logging_level) #CompDirectoryCreator class #------------------------------------------------------------------ class CompDirectoryCreator(DirectoryCreator): #Constructor def __init__(self,
[docs] asset_name, root_directory, logging_level = logging.DEBUG): #super class init super(CompDirectoryCreator, self).__init__(asset_name, root_directory) #directory_list #------------------------------------------------------------------ self.directory_list = COMP_DIRECTORY_LIST self.directory_type = 'comp' #logger #------------------------------------------------------------------ self.logger = logging.getLogger(self.__class__.__name__) self.logging_level = logging_level self.logger.setLevel(self.logging_level) #PhotoscanDirectoryCreator class #------------------------------------------------------------------ class PhotoscanDirectoryCreator(DirectoryCreator): #Constructor def __init__(self,
[docs] asset_name, root_directory, logging_level = logging.DEBUG): #super class init super(PhotoscanDirectoryCreator, self).__init__(asset_name, root_directory) #directory_list #------------------------------------------------------------------ self.directory_list = PHOTOSCAN_DIRECTORY_LIST self.directory_type = 'photoscan' #logger #------------------------------------------------------------------ self.logger = logging.getLogger(self.__class__.__name__) self.logging_level = logging_level self.logger.setLevel(self.logging_level) #Test #------------------------------------------------------------------ if (__name__ == '__main__'): #test_root_dir
test_root_dir = 'c:/symlinks/temp/directory_creator_test' #test_prop_asset_name test_prop_asset_name = 'table' #test_photoscan_asset_name test_photoscan_asset_name = 'stairs_horizontal' ''' #divider global_functions.divider() #prop_directory_creator prop_directory_creator = PropDirectoryCreator(test_prop_asset_name, test_root_dir) prop_directory_creator.create_directories() print('Asset directory: {0}'.format(prop_directory_creator.get_asset_directory())) ''' #divider global_functions.divider() #photoscan_directory_creator photoscan_directory_creator = PropDirectoryCreator(test_photoscan_asset_name, test_root_dir) print('Asset directory: {0}'.format(photoscan_directory_creator.get_asset_directory())) #print directories string print(photoscan_directory_creator.get_directories_string())