def deleteAsset(node = None): """Deletes the selected node. EXACTLY ONE node may be selected, and it MUST be a digital asset. The node must already exist in the database. It may not be already checked out in Houdini or in Maya. """ updateDB() if node != None: if not isDigitalAsset(node): hou.ui.displayMessage("Not a Digital Asset.", title='Non-Asset Node', severity=hou.severityType.Error) return else: if isContainer(node): oldlibraryPath = node.type().definition().libraryFilePath() oldfilename = os.path.basename(oldlibraryPath) oldAssetName = oldfilename.split('.')[0] assetDirPath = os.path.join(ASSETSDIR, oldAssetName) dependents = getAssetDependents(oldAssetName) if dependents: hou.ui.displayMessage('The following assets are depenent on this asset: \n\n'+printList(dependents)+'\nModify these assets first before attempting to delete again!!', title='Can NOT delete!', severity=hou.severityType.Error) return info = getFileInfo(oldfilename) if info[2]: logname, realname = amu.lockedBy(info[3].encode('utf-8')) whoLocked = 'User Name: ' + logname + '\nReal Name: ' + realname + '\n' errstr = 'Cannot delete asset. Locked by: \n\n' + whoLocked hou.ui.displayMessage(errstr, title='Asset Locked', severity=hou.severityType.Error) return if not amu.canRemove(assetDirPath): hou.ui.displayMessage("Asset currently checked out in Maya. Cannot delete asset.", title='Maya Lock', severity=hou.severityType.Error) return message = "The following paths and files will be deleted:\n" + assetDirPath + "\n" + oldlibraryPath hou.ui.displayMessage(message, title='Asset Deleted', severity=hou.severityType.Error) #TODO remove ui module if ui.passwordWindow('d3l3t3p@ssw0rd', wmessage='Enter the deletion password ...'): node.destroy() hou.hda.uninstallFile(oldlibraryPath, change_oplibraries_file=False) try: amu.removeFolder(assetDirPath) os.remove(oldlibraryPath) except Exception as ex: hou.ui.displayMessage("The following exception occured:\n" + str(ex), title='Exception Occured', severity=hou.severityType.Error) return else: hou.ui.displayMessage("Select EXACTLY one node.") return
def rename(node = None): """Renames the selected node. EXACTLY ONE node may be selected, and it MUST be a digital asset. The node must already exist in the database. """ updateDB() if node != None: if not isDigitalAsset(node): hou.ui.displayMessage("Not a Digital Asset.") else: if isContainer(node): oldlibraryPath = node.type().definition().libraryFilePath() oldfilename = os.path.basename(oldlibraryPath) oldAssetName = oldfilename.split('.')[0] assetDirPath = os.path.join(ASSETSDIR, oldAssetName) dependents = getAssetDependents(oldAssetName) if dependents: hou.ui.displayMessage('The following assets are depenent on this asset: \n\n'+printList(dependents)+'\nModify these assets first before attempting to rename again!!', title='Can NOT rename!', severity=hou.severityType.Error) return info = getFileInfo(oldfilename) if not info[2]: #TODO: replace ui function if ui.passwordWindow('r3n@m3p@ssw0rd', 'Enter the rename password...'): resp = hou.ui.displayMessage("Enter the New Operator Label", title="Rename OTL") if resp != None and resp.strip() != '': name = formatName(resp) newfilename = name.replace(' ', '_') newfilepath = os.path.join(OTLDIR, newfilename+'.otl') if os.path.exists(newfilepath): hou.ui.displayMessage("Asset by that name already exists. Cannot rename asset.", title='Asset Name', severity=hou.severityType.Error) elif not amu.canRename(assetDirPath, newfilename): hou.ui.displayMessage("Asset checked out in Maya. Cannot rename asset.", title='Asset Name', severity=hou.severityType.Error) else: node.type().definition().copyToHDAFile(newfilepath, new_name=newfilename, new_menu_name=name) hou.hda.installFile(newfilepath, change_oplibraries_file=True) newnode = hou.node(determineHPATH()).createNode(newfilename) node.destroy() hou.hda.uninstallFile(oldlibraryPath, change_oplibraries_file=False) subprocess.check_call( ['rm','-f',oldlibraryPath] ) amu.renameAsset(assetDirPath, newfilename) else: logname, realname = amu.lockedBy(info[3].encode('utf-8')) whoLocked = 'User Name: ' + logname + '\nReal Name: ' + realname + '\n' errstr = 'Cannot checkout asset. Locked by: \n\n' + whoLocked hou.ui.displayMessage(errstr, title='Asset Locked', severity=hou.severityType.Error) else: hou.ui.displayMessage("Select EXACTLY one node.")
def deleteAsset(node = None): """Deletes the selected node. EXACTLY ONE node may be selected, and it MUST be a digital asset. The node must already exist in the database. It may not be already checked out in Houdini or in Maya. """ updateDB() if node != None: if not isDigitalAsset(node): ui.infoWindow("Not a Digital Asset.", wtitle='Non-Asset Node', msev=messageSeverity.Error) return else: if isContainer(node): oldlibraryPath = node.type().definition().libraryFilePath() oldfilename = os.path.basename(oldlibraryPath) oldAssetName = oldfilename.split('.')[0] assetDirPath = os.path.join(ASSETSDIR, oldAssetName) dependents = getAssetDependents(oldAssetName) if dependents: ui.infoWindow('The following assets are depenent on this asset: \n\n'+printList(dependents)+'\nModify these assets first before attempting to delete again!!', wtitle='Can NOT delete!', msev=messageSeverity.Error) return info = getFileInfo(oldfilename) if info[2]: logname, realname = amu.lockedBy(info[3].encode('utf-8')) whoLocked = 'User Name: ' + logname + '\nReal Name: ' + realname + '\n' errstr = 'Cannot delete asset. Locked by: \n\n' + whoLocked ui.infoWindow(errstr, wtitle='Asset Locked', msev=messageSeverity.Error) return if not amu.canRemove(assetDirPath): ui.infoWindow("Asset currently checked out in Maya. Cannot delete asset.", wtitle='Maya Lock', msev=messageSeverity.Error) return message = "The following paths and files will be deleted:\n" + assetDirPath + "\n" + oldlibraryPath ui.infoWindow(message, wtitle='Asset Deleted', msev=messageSeverity.Message) if ui.passwordWindow('d3l3t3p@ssw0rd', wmessage='Enter the deletion password ...'): node.destroy() hou.hda.uninstallFile(oldlibraryPath, change_oplibraries_file=False) try: amu.removeFolder(assetDirPath) os.remove(oldlibraryPath) except Exception as ex: ui.infoWindow("The following exception occured:\n" + str(ex), wtitle='Exception Occured', msev=messageSeverity.Error) return else: ui.infoWindow("Select EXACTLY one node.") return
def rename(node = None): """Renames the selected node. EXACTLY ONE node may be selected, and it MUST be a digital asset. The node must already exist in the database. """ updateDB() if node != None: if not isDigitalAsset(node): ui.infoWindow("Not a Digital Asset.") else: if isContainer(node): oldlibraryPath = node.type().definition().libraryFilePath() oldfilename = os.path.basename(oldlibraryPath) oldAssetName = oldfilename.split('.')[0] assetDirPath = os.path.join(ASSETSDIR, oldAssetName) dependents = getAssetDependents(oldAssetName) if dependents: ui.infoWindow('The following assets are depenent on this asset: \n\n'+printList(dependents)+'\nModify these assets first before attempting to rename again!!', wtitle='Can NOT rename!', msev=messageSeverity.Error) return info = getFileInfo(oldfilename) if not info[2]: if ui.passwordWindow('r3n@m3p@ssw0rd', wmessage='Enter the rename password...'): resp = ui.inputWindow("Enter the New Operator Label", wtitle="Rename OTL") if resp != None and resp.strip() != '': name = formatName(resp) newfilename = name.replace(' ', '_') newfilepath = os.path.join(OTLDIR, newfilename+'.otl') if os.path.exists(newfilepath): ui.infoWindow("Asset by that name already exists. Cannot rename asset.", wtitle='Asset Name', msev=messageSeverity.Error) elif not amu.canRename(assetDirPath, newfilename): ui.infoWindow("Asset checked out in Maya. Cannot rename asset.", wtitle='Asset Name', msev=messageSeverity.Error) else: node.type().definition().copyToHDAFile(newfilepath, new_name=newfilename, new_menu_name=name) hou.hda.installFile(newfilepath, change_oplibraries_file=True) newnode = hou.node(determineHPATH()).createNode(newfilename) node.destroy() hou.hda.uninstallFile(oldlibraryPath, change_oplibraries_file=False) subprocess.check_call( ['rm','-f',oldlibraryPath] ) amu.renameAsset(assetDirPath, newfilename) else: logname, realname = amu.lockedBy(info[3].encode('utf-8')) whoLocked = 'User Name: ' + logname + '\nReal Name: ' + realname + '\n' errstr = 'Cannot checkout asset. Locked by: \n\n' + whoLocked ui.infoWindow(errstr, wtitle='Asset Locked', msev=messageSeverity.Error) else: ui.infoWindow("Select EXACTLY one node.")
def rename(node = None): """Renames the selected node. EXACTLY ONE node may be selected, and it MUST be a digital asset. The node must already exist in the database. """ updateDB() if node != None: if not isDigitalAsset(node): ui.infoWindow("Not a Digital Asset.") else: if isContainer(node): oldlibraryPath = node.type().definition().libraryFilePath() oldfilename = os.path.basename(oldlibraryPath) oldAssetName = oldfilename.split('.')[0] assetDirPath = os.path.join(ASSETSDIR, oldAssetName) info = getFileInfo(oldfilename) if not info[2]: if ui.passwordWindow('r3n@m3p@ssw0rd', wmessage='Enter the rename password...'): resp = ui.inputWindow("Enter the New Operator Label", wtitle="Rename OTL") if resp != None and resp.strip() != '': name = formatName(resp) newfilename = name.replace(' ', '_') newfilepath = os.path.join(OTLDIR, newfilename+'.otl') if os.path.exists(newfilepath): ui.infoWindow("Asset by that name already exists. Cannot rename asset.", wtitle='Asset Name', msev=messageSeverity.Error) elif not amu.canRename(assetDirPath, newfilename): ui.infoWindow("Asset checked out in Maya. Cannot rename asset.", wtitle='Asset Name', msev=messageSeverity.Error) else: node.type().definition().copyToHDAFile(newfilepath, new_name=newfilename, new_menu_name=name) hou.hda.installFile(newfilepath, change_oplibraries_file=True) newnode = hou.node(determineHPATH()).createNode(newfilename) node.destroy() hou.hda.uninstallFile(oldlibraryPath, change_oplibraries_file=False) os.system('rm -f '+oldlibraryPath) amu.renameAsset(assetDirPath, newfilename) else: logname, realname = amu.lockedBy(info[3].encode('utf-8')) whoLocked = 'User Name: ' + logname + '\nReal Name: ' + realname + '\n' errstr = 'Cannot checkout asset. Locked by: \n\n' + whoLocked ui.infoWindow(errstr, wtitle='Asset Locked', msev=messageSeverity.Error) else: ui.infoWindow("Select EXACTLY one node.")
def deleteAsset(node=None): """Deletes the selected node. EXACTLY ONE node may be selected, and it MUST be a digital asset. The node must already exist in the database. It may not be already checked out in Houdini or in Maya. """ updateDB() if node != None: if not isDigitalAsset(node): ui.infoWindow("Not a Digital Asset.", wtitle="Non-Asset Node", msev=messageSeverity.Error) return else: if isContainer(node): oldlibraryPath = node.type().definition().libraryFilePath() oldfilename = os.path.basename(oldlibraryPath) oldAssetName = oldfilename.split(".")[0] assetDirPath = os.path.join(ASSETSDIR, oldAssetName) dependents = getAssetDependents(oldAssetName) if dependents: ui.infoWindow( "The following assets are depenent on this asset: \n\n" + printList(dependents) + "\nModify these assets first before attempting to delete again!!", wtitle="Can NOT delete!", msev=messageSeverity.Error, ) return info = getFileInfo(oldfilename) if info[2]: logname, realname = amu.lockedBy(info[3].encode("utf-8")) whoLocked = "User Name: " + logname + "\nReal Name: " + realname + "\n" errstr = "Cannot delete asset. Locked by: \n\n" + whoLocked ui.infoWindow(errstr, wtitle="Asset Locked", msev=messageSeverity.Error) return if not amu.canRemove(assetDirPath): ui.infoWindow( "Asset currently checked out in Maya. Cannot delete asset.", wtitle="Maya Lock", msev=messageSeverity.Error, ) return message = "The following paths and files will be deleted:\n" + assetDirPath + "\n" + oldlibraryPath ui.infoWindow(message, wtitle="Asset Deleted", msev=messageSeverity.Message) if ui.passwordWindow("d3l3t3p@ssw0rd", wmessage="Enter the deletion password ..."): node.destroy() hou.hda.uninstallFile(oldlibraryPath, change_oplibraries_file=False) try: amu.removeFolder(assetDirPath) os.remove(oldlibraryPath) except Exception as ex: ui.infoWindow( "The following exception occured:\n" + str(ex), wtitle="Exception Occured", msev=messageSeverity.Error, ) return else: ui.infoWindow("Select EXACTLY one node.") return
def rename(node=None): """Renames the selected node. EXACTLY ONE node may be selected, and it MUST be a digital asset. The node must already exist in the database. """ updateDB() if node != None: if not isDigitalAsset(node): ui.infoWindow("Not a Digital Asset.") else: if isContainer(node): oldlibraryPath = node.type().definition().libraryFilePath() oldfilename = os.path.basename(oldlibraryPath) oldAssetName = oldfilename.split(".")[0] assetDirPath = os.path.join(ASSETSDIR, oldAssetName) dependents = getAssetDependents(oldAssetName) if dependents: ui.infoWindow( "The following assets are depenent on this asset: \n\n" + printList(dependents) + "\nModify these assets first before attempting to rename again!!", wtitle="Can NOT rename!", msev=messageSeverity.Error, ) return info = getFileInfo(oldfilename) if not info[2]: if ui.passwordWindow("r3n@m3p@ssw0rd", wmessage="Enter the rename password..."): resp = ui.inputWindow("Enter the New Operator Label", wtitle="Rename OTL") if resp != None and resp.strip() != "": name = formatName(resp) newfilename = name.replace(" ", "_") newfilepath = os.path.join(OTLDIR, newfilename + ".otl") if os.path.exists(newfilepath): ui.infoWindow( "Asset by that name already exists. Cannot rename asset.", wtitle="Asset Name", msev=messageSeverity.Error, ) elif not amu.canRename(assetDirPath, newfilename): ui.infoWindow( "Asset checked out in Maya. Cannot rename asset.", wtitle="Asset Name", msev=messageSeverity.Error, ) else: node.type().definition().copyToHDAFile( newfilepath, new_name=newfilename, new_menu_name=name ) hou.hda.installFile(newfilepath, change_oplibraries_file=True) newnode = hou.node(determineHPATH()).createNode(newfilename) node.destroy() hou.hda.uninstallFile(oldlibraryPath, change_oplibraries_file=False) subprocess.check_call(["rm", "-f", oldlibraryPath]) amu.renameAsset(assetDirPath, newfilename) else: logname, realname = amu.lockedBy(info[3].encode("utf-8")) whoLocked = "User Name: " + logname + "\nReal Name: " + realname + "\n" errstr = "Cannot checkout asset. Locked by: \n\n" + whoLocked ui.infoWindow(errstr, wtitle="Asset Locked", msev=messageSeverity.Error) else: ui.infoWindow("Select EXACTLY one node.")