Пример #1
0
 def getAsset(self, shot, assetName):
     assetType = ftrack.AssetType('Upload')
     try:
         asset = shot.getAsset(assetName, assetType)
     except:
         asset = shot.createAsset(assetName, assetType)
     return asset
Пример #2
0
    def __init__(self, parent, browseMode='Shot'):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_ExportAssetOptions()
        self.ui.setupUi(self)
        self.currentAssetType = None
        self.currentTask = None
        self.browseMode = browseMode
        self.ui.ListAssetsViewModel = QtGui.QStandardItemModel()

        self.ui.ListAssetsSortModel = QtCore.QSortFilterProxyModel()

        self.ui.ListAssetsSortModel.setDynamicSortFilter(True)
        self.ui.ListAssetsSortModel.setFilterKeyColumn(1)
        self.ui.ListAssetsSortModel.setSourceModel(self.ui.ListAssetsViewModel)

        self.ui.ListAssetNamesComboBox.setModel(self.ui.ListAssetsSortModel)

        self.ui.ListAssetsComboBoxModel = QtGui.QStandardItemModel()

        assetTypeItem = QtGui.QStandardItem('Select AssetType')
        self.assetTypes = []
        self.assetTypes.append('')
        self.ui.ListAssetsComboBoxModel.appendRow(assetTypeItem)

        assetHandler = FTAssetHandlerInstance.instance()
        self.assetTypesStr = sorted(assetHandler.getAssetTypes())

        for assetTypeStr in self.assetTypesStr:
            try:
                assetType = ftrack.AssetType(assetTypeStr)
            except:
                log.warning('{0} not available in ftrack'.format(assetTypeStr))
                continue
            assetTypeItem = QtGui.QStandardItem(assetType.getName())
            assetTypeItem.type = assetType.getShort()
            self.assetTypes.append(assetTypeItem.type)
            self.ui.ListAssetsComboBoxModel.appendRow(assetTypeItem)

        self.ui.ListAssetsComboBox.setModel(self.ui.ListAssetsComboBoxModel)

        self.ui.AssetTaskComboBoxModel = QtGui.QStandardItemModel()
        self.ui.AssetTaskComboBox.setModel(self.ui.AssetTaskComboBoxModel)

        self.ui.ListAssetNamesComboBox.currentIndexChanged[str].connect(
            self.onAssetChanged)

        if browseMode == 'Task':
            self.ui.AssetTaskComboBox.hide()
            self.ui.assetTaskLabel.hide()
Пример #3
0
    def __init__(self):

        super(GizmoPublisherDialog, self).__init__(
            QtGui.QApplication.desktop()
        )
        applyTheme(self, 'integration')
        self.setupUI()
        self.session = ftrack_api.Session()
        try:
            ftrack.AssetType('nuke_gizmo')
        except ftrack.FTrackError as error:
            self.header.setMessage(
                'No Asset type with short name "nuke_gizmo" found. Contact your '
                'supervisor or system administrator to add it.',
                'warning'
            )
        self.exec_()
    def updateAssetTypeOptions(self):
        '''Update list of asset types to filter by.'''
        self.assetTypeSelectorModel.clear()

        assetTypes = ftrack.getAssetTypes()
        assetTypes = sorted(assetTypes,
                            key=lambda assetType: assetType.getName().lower())

        assetTypeItem = QtGui.QStandardItem('Show All')
        self.assetTypeSelectorModel.appendRow(assetTypeItem)

        assetHandler = FTAssetHandlerInstance.instance()
        assetTypesStr = sorted(assetHandler.getAssetTypes())

        for assetTypeStr in assetTypesStr:
            try:
                assetType = ftrack.AssetType(assetTypeStr)
            except:
                print assetTypeStr + ' not available in ftrack'
                continue

            assetTypeItem = QtGui.QStandardItem(assetType.getName())
            assetTypeItem.type = assetType.getShort()
            self.assetTypeSelectorModel.appendRow(assetTypeItem)
Пример #5
0
def publishAsset(n, assetName, content, comment, shot, currentTask):
    header = getHeaderKnob(n)

    if not currentTask:
        header.setMessage('Could not find current task', 'warning')
    else:
        publishProgress = nuke.ProgressTask('Publishing assets')
        publishProgress.setProgress(0)
        currentTaskId = currentTask.getId()
        assetType = n['ftrackassettype'].value()

        publishProgress.setMessage('Validating asset types')
        try:
            ftrack.AssetType(assetType)
        except ftrack.FTrackError:
            header.setMessage(
                'No Asset type with short name "{0}" found. Contact your '
                'system administrator to add it.'.format(assetType), 'warning')
            return

        publishProgress.setMessage('Creating new version')
        asset = shot.createAsset(assetName, assetType)
        assetVersion = asset.createVersion(comment=comment,
                                           taskid=currentTaskId)

        if assetType in ['img', 'cam', 'geo', 'render']:
            if assetType == 'img':
                imgAsset = nukeassets.ImageSequenceAsset()
                publishedComponents = imgAsset.publishContent(
                    content,
                    assetVersion,
                    progressCallback=publishProgress.setProgress)

            elif assetType == 'cam':
                camAsset = nukeassets.CameraAsset()
                publishedComponents = camAsset.publishContent(
                    content,
                    assetVersion,
                    progressCallback=publishProgress.setProgress)

            elif assetType == 'geo':
                geoAsset = nukeassets.GeometryAsset()
                publishedComponents = geoAsset.publishContent(
                    content,
                    assetVersion,
                    progressCallback=publishProgress.setProgress)

            elif assetType == 'render':
                renderAsset = nukeassets.RenderAsset()
                publishedComponents = renderAsset.publishContent(
                    content,
                    assetVersion,
                    progressCallback=publishProgress.setProgress)

            if n['fscript'].value():
                if n['fcopy'].value():
                    temporaryPath = HelpFunctions.temporaryFile(suffix='.nk')
                    nuke.scriptSave(temporaryPath)
                    mainPath = temporaryPath
                else:
                    if nuke.Root().name() == 'Root':
                        tmp_script = tempfile.NamedTemporaryFile(suffix='.nk')
                        curScript = nuke.toNode("root").name()
                        nuke.scriptSaveAs(tmp_script.name)
                        mainAbsPath = tmp_script.name
                    else:
                        mainAbsPath = nuke.root()['name'].value()
                    mainPath = mainAbsPath

                publishedComponents.append(
                    FTComponent(componentname='nukescript', path=mainPath))

            if publishedComponents:
                pubObj = FTAssetObject(assetVersionId=assetVersion.getId())
                connector.Connector.publishAssetFiles(
                    publishedComponents,
                    assetVersion,
                    pubObj,
                    copyFiles=n['fcopy'].value(),
                    progressCallback=publishProgress.setProgress)

        else:
            header.setMessage("Can't publish this assettype yet", 'info')
            return

        publishProgress.setMessage('Setting up version dependencies')
        dependencies = get_dependencies()
        if dependencies:
            for name, version in dependencies.items():
                assetVersion.addUsesVersions(versions=version)

        assetVersion.publish()
        publishProgress.setProgress(100)

        header.setMessage('Asset published!')