def getAssetFile(sProject, sAsset, sType, iVersion=0): sDirectory, sWipDirectory = getAssetDirectory(sProject=sProject, sAsset=sAsset, sType=sType) if not os.path.isfile(os.path.join(sDirectory, 'assetInfo.version')): raise RuntimeError( 'assetInfo.version does not exist in %s, can not read the asset' % (sAsset, os.path.abspath(sDirectory))) dAssetInfo = files.readJsonFile( os.path.join(sDirectory, 'assetInfo.version')) if iVersion == 0: sFileName = '%s%s' % (dAssetInfo['assetInfo']['sCurrentVersionName'], dAssetInfo['assetInfo']['sFileType']) if sType == 'rig': sDirectory = sWipDirectory else: sFileName = '%s%s' % ( dAssetInfo['versionInfo'][iVersion]['sVersionName'], dAssetInfo['assetInfo']['sFileType']) sDirectory = sWipDirectory if os.path.isfile(os.path.join(sDirectory, sFileName)): sFilePath = os.path.join(sDirectory, sFileName) #setProject(os.path.join(sPathLocal, sProject)) #cmds.file(os.path.join(sDirectory, sFileName), open = True) else: sFilePath = None return sFilePath
def getFoldersFromFolderList(sPath, bCreate=False): sFolderListPath = os.path.join(sPath, sFolderListName) if not os.path.exists(sFolderListPath): lFolders = [] if bCreate: createFolderListFile(sPath) else: lFolders = files.readJsonFile(sFolderListPath) return lFolders
def writeFolderListFile(sPath, sName, sReplace=None, bRemove=False): sFolderListPath = os.path.join(sPath, sFolderListName) lFolders = files.readJsonFile(sFolderListPath) if not bRemove: if sReplace: lFolders.remove(sReplace) lFolders.append(sName) else: lFolders.remove(sName) lFolders.sort() files.writeJsonFile(sFolderListPath, lFolders)
def renameAsset(sProject, sAsset, sName): fStartTime = time.time() #rename asset sDirectory, sWipDirectory = getAssetDirectory(sProject=sProject, sAsset=sAsset) for sVersionFile in lVersionFiles: sDirectoryAsset = os.path.dirname(sVersionFile) sWipDirectoryAsset = os.path.join(sDirectoryAsset, 'wipFiles') dAssetInfo = files.readJsonFile(sVersionFile) sCurrentVersion = None lVersions = [] if dAssetInfo['assetInfo']['sCurrentVersionName']: sCurrentVersion = dAssetInfo['assetInfo'][ 'sCurrentVersionName'] + dAssetInfo['assetInfo']['sFileType'] dAssetInfo['assetInfo']['sCurrentVersionName'] = dAssetInfo[ 'assetInfo']['sCurrentVersionName'].replace(sAsset, sName) dAssetInfo['assetInfo']['sAsset'] = sName if dAssetInfo['versionInfo']: for iVersion in dAssetInfo['versionInfo'].keys(): lVersions.append( dAssetInfo['versionInfo'][iVersion]['sVersionName'] + dAssetInfo['versionInfo'][iVersion]['sFileType']) dAssetInfo['versionInfo'][iVersion][ 'sVersionName'] = dAssetInfo['versionInfo'][iVersion][ 'sVersionName'].replace(sAsset, sName) files.writeJsonFile(sVersionFile, dAssetInfo) for sVersion in lVersions: os.rename( os.path.join(sWipDirectoryAsset, sVersion), os.path.join(sWipDirectoryAsset, sVersion.replace(sAsset, sName))) if sCurrentVersion: os.rename( os.path.join(sDirectoryAsset, sCurrentVersion), os.path.join(sDirectoryAsset, sCurrentVersion.replace(sAsset, sName))) # rename folder sDirectoryProject, sWipDirectory = getAssetDirectory(sProject=sProject) os.rename(sDirectory, os.path.join(sDirectoryProject, sName)) # write file list sDirectory, sWipDirectory = getAssetDirectory(sProject=sProject) writeFolderListFile(sDirectory, sName, sReplace=sAsset) fEndTime = time.time() print 'renamed %s to %s, took %f seconds' % (sAsset, sName, fEndTime - fStartTime)
def renameProject(sProject, sName): fStartTime = time.time() # rename version file's sProject lVersionFiles = getVersionFiles(sProject) if lVersionFiles: for sVersionFile in lVersionFiles: dAssetInfo = files.readJsonFile(sVersionFile) dAssetInfo['assetInfo']['sProject'] = sName files.writeJsonFile(sVersionFile, dAssetInfo) # rename project os.rename(os.path.join(sPathLocal, sProject), os.path.join(sPathLocal, sName)) # write file list writeFolderListFile(sPathLocal, sName, sReplace=sProject) fEndTime = time.time() print 'renamed %s to %s, took %f seconds' % (sProject, sName, fEndTime - fStartTime)
def saveAsset(sAsset, sType, sProject, sTag=None, sComment=None): fStartTime = time.time() sDirectory, sWipDirectory = getAssetDirectory(sProject=sProject, sAsset=sAsset, sType=sType) # check if wip folder exists, create folder if not exists files.createFolder(sWipDirectory) # check if versionInfo file exists, create one if not if not os.path.isfile(os.path.join(sDirectory, 'assetInfo.version')): createVersionFile(sAsset, sType, sProject, sDirectory) cmds.warning('assetInfo.version did not exist, created the file') dAssetInfo = files.readJsonFile( os.path.join(sDirectory, 'assetInfo.version')) dVersions = dAssetInfo['versionInfo'] lVersions = [] if dVersions: for sKey in dVersions.keys(): lVersions.append(int(sKey)) iVersions = max(lVersions) else: lVersions = None iVersions = 0 if sTag: sTag = files.convertStringToCamelcase(sTag) else: sTag = 'initial' if not sComment: sComment = 'initial' iVersionCurrent = iVersions + 1 sFileDelete = '%s%s' % (dAssetInfo['assetInfo']['sCurrentVersionName'], dAssetInfo['assetInfo']['sFileType']) sFileName = '%s_%s_%s_v%03d' % (sAsset, sType, sTag, iVersionCurrent) dAssetInfo['assetInfo']['sCurrentVersionName'] = sFileName if sType == 'model': cmds.file(rename=os.path.join(sDirectory, '%s%s' % (sFileName, sFileType))) cmds.file(save=True, f=True) if iVersions >= iBackup: iMin = str(min(lVersions)) sBackUpName = dVersions[iMin]['sVersionName'] dVersions.pop(iMin, None) os.remove( os.path.join(sWipDirectory, '%s%s' % (sBackUpName, sFileType))) dVersionCurrent = { iVersionCurrent: { 'sVersionName': sFileName, 'sComment': sComment, 'sFileType': sFileType } } dVersions.update(dVersionCurrent) files.writeJsonFile(os.path.join(sDirectory, 'assetInfo.version'), dAssetInfo) if sType == 'model': copyfile(os.path.join(sDirectory, '%s%s' % (sFileName, sFileType)), os.path.join(sWipDirectory, '%s%s' % (sFileName, sFileType))) elif sType == 'rig': cmds.file(rename=os.path.join(sWipDirectory, '%s%s' % (sFileName, sFileType))) cmds.file(save=True, f=True) if os.path.exists(os.path.join(sDirectory, sFileDelete)): os.remove(os.path.join(sDirectory, sFileDelete)) setProject(sDirectory) fEndTime = time.time() print 'asset saved at %s, took %f seconds' % (sDirectory, fEndTime - fStartTime)