Beispiel #1
0
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)
Beispiel #2
0
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
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)