def syncFolder(sPath, sPathSource, sFolder): lFoldersSource = getFoldersFromFolderList(sPathSource, bCreate=False) if sFolder in lFoldersSource: lFolders = getFoldersFromFolderList(sPath, bCreate=True) if sFolder not in lFolders: files.createFolder(os.path.join(sPath, sFolder)) writeFolderListFile(sPath, sFolder)
def createProject(sName): ## create/write folder list sFolderListPath = os.path.join(sPathLocal, sFolderListName) if not os.path.exists(sFolderListPath): createFolderListFile(sPathLocal) writeFolderListFile(sPathLocal, sName) ## create project sDirectory = os.path.join(sPathLocal, sName) files.createFolder(sDirectory) # create folder list createFolderListFile(sDirectory) for sFolder in files.lProjectFolders: files.createFolder(os.path.join(sDirectory, sFolder)) writeFolderListFile(sDirectory, sFolder) setProject(sDirectory) return sDirectory
def syncAsset(sProject, sAsset, sType, sMode='server'): fStartTime = time.time() if sMode == 'server': sPathSync = sPathServer sPathSource = sPathLocal sModeSource = 'local' else: sPathSync = sPathLocal sPathSource = sPathServer sModeSource = 'server' syncFolder(sPathSync, sPathSource, sProject) if sAsset: sPathAsset = os.path.join(sPathSync, sProject) sPathAsset = os.path.join(sPathAsset, 'assets') files.createFolder(sPathAsset) sPathSourceAsset = os.path.join(sPathSource, sProject) sPathSourceAsset = os.path.join(sPathSourceAsset, 'assets') syncFolder(sPathAsset, sPathSourceAsset, sAsset) if sType: sPathType = os.path.join(sPathAsset, sAsset) sPathSourceType = os.path.join(sPathSourceAsset, sAsset) syncFolder(sPathType, sPathSourceType, sType) if os.path.exists(os.path.join(sPathType, sType)): rmtree(os.path.join(sPathType, sType)) sPathTypeSync, sPathTemp = getAssetDirectory(sProject=sProject, sAsset=sAsset, sType=sType, sMode=sModeSource) copytree(sPathTypeSync, os.path.join(sPathType, sType)) fEndTime = time.time() sSyncName = '' for sName in [sProject, sAsset, sType]: if sName: sSyncName += '%s' % sName if sName != sType: sSyncName += '\\' print 'synced %s, took %f seconds' % (sSyncName, fEndTime - fStartTime)
def createAsset(sAsset, sProject=None): if not sProject: sDirectory = getProject() sDirectory = os.path.abspath(sDirectory) if sPathLocal not in sDirectory: raise RuntimeError( 'This project is not set to the proper path, you need to save the project under %s to link to the server' % sPathLocal) sProject = files.getFoldersThroughPath(sDirectory)[-1] ## create/write folder list sAssetDir, sAssetWipDir = getAssetDirectory(sProject=sProject) sFolderListPath = os.path.join(sAssetDir, sFolderListName) if not os.path.exists(sFolderListPath): createFolderListFile(sAssetDir) writeFolderListFile(sAssetDir, sAsset) ## create asset folder sAssetDir, sAssetWipDir = getAssetDirectory(sProject=sProject, sAsset=sAsset) files.createFolder(sAssetDir) setProject(sAssetDir)
def createAssetType(sAsset, sProject=None, sType='model'): if not sProject: sDirectory = getProject() sDirectory = os.path.abspath(sDirectory) if sPathLocal not in sDirectory: raise RuntimeError( 'This project is not set to the proper path, you need to save the project under %s to link to the server' % sPathLocal) sProject = files.getFoldersThroughPath(sDirectory)[-1] ## create/write file list sAssetDir, sAssetWipDir = getAssetDirectory(sProject=sProject, sAsset=sAsset) sFolderListPath = os.path.join(sAssetDir, sFolderListName) if not os.path.exists(sFolderListPath): createFolderListFile(sAssetDir) writeFolderListFile(sAssetDir, sType) #Create Type sAssetDir, sAssetWipDir = getAssetDirectory(sProject=sProject, sAsset=sAsset, sType=sType) files.createFolder(sAssetDir) files.createFolder(sAssetWipDir) setProject(sAssetDir) if sType == 'rig': sComponentDir = os.path.join(sAssetDir, 'components') files.createFolder(sComponentDir) dSubFolders = files.dRiggingComponents for sSubFolder in dSubFolders.keys(): sFolderDir = os.path.join(sComponentDir, sSubFolder) files.createFolder(sFolderDir) sWipDir = os.path.join(sFolderDir, 'wipFiles') files.createFolder(sWipDir) createVersionFile(sAsset, sType, sProject, sAssetDir)
def createProjectFiles(sProjectDir): lFiles = cmds.workspace(q=True, fileRuleList=True) for sFile in lFiles: sFileDir = cmds.workspace(fileRuleEntry=sFile) sFileDir = os.path.join(sProjectDir, sFileDir) files.createFolder(sFileDir)
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)