Script format error?


why is there a red underline here? No matter how much I try to redo it it shows that red underline. The format is correct, I just pressed tab once and everything should be good but this red underline does not go away, is this something that happens some times?

We can’t tell without seeing the rest of the script, but it’s probably an indentation error (or you’re missing a : at the end of an expression–something like that). There was a similar thread recently, you might try this:

Also, when posting scripts, post them as preformatted text. It helps speed up the troubleshooting process by others, see Wiki - how to post code on this forum .

	assetID = self.parent.parent.getChild("AssetIDDetails").getChild("IDDisplay").props.text	
	assetName = self.parent.parent.getChild("AssetNameDetails").getChild("NameDisplay").props.text
	lineID = self.parent.parent.getChild("LineIDDetails").getChild("IDDisplay").props.text
	lineName = self.parent.parent.getChild("LineNameDetails").getChild("NameDropdown").props.value
	locationID = self.parent.parent.getChild("LocationDetails").getChild("LocationDropdown").props.value
	categoryID = self.parent.parent.getChild("CategoryDetails").getChild("CategoryDropdown").props.value
	role_name= self.parent.parent.getChild("RoleAndWorkcenterContainer").getChild("RoleDropdown").props.value
	andonDisplay = self.parent.parent.getChild("AndonDisplayDetails").getChild("AndonDisplay").props.text
	roleID = 0
	if role_name == 'Primary':
		roleID = 1
	else:
		roleID = 2
	modified = self.session.custom.clockNumber
	
	try:
	    IDAllowed = False
	
	    if assetID == '':
	        # Auto-generate Asset ID
	        maxIDDataset = system.db.runNamedQuery('Assets/GetMaxID')
	        if maxIDDataset.rowCount > 0:
	            assetID = int(maxIDDataset[0]['Asset_ID']) + 1
	        IDAllowed = True
	    else:
	        # Check if custom Asset ID already exists
	        check = system.db.runNamedQuery('Assets/CheckExist', {'assetID': assetID})
	        if check.rowCount > 0:
	            raise Exception("ID already exists, try another ID")
	        else:
	            IDAllowed = True
		
		system.perspective.print("Now create asset)
		
		# --- Create asset if ID is allowed ---
		if IDAllowed:
	        parameters = {
	            'assetID': assetID,
	            'assetName': assetName,
	            'lineID': lineID,
	            'roleID': 1 if role_name == 'Primary' else 2,
	            'modifiedBy': modified,
	            'andonDisplay': andonDisplay
	        }
	
	        result = system.db.runNamedQuery('Assets/CreateAsset', parameters)
	
	        if result:
				# log change in Change_Log DB table
				# retrieve group ID given selected group name in dropdown menu
				# categoryID = self.parent.parent.parent.getChild("LineFields").getChild("SetupInformationContainer").getChild("Column2").getChild("Category").getChild("CategoryDropdown").props.value	
				categories = {1: 'Molding', 2: 'Paint', 3: 'Assembly', 4: 'Warehouse'}
				category = categories[categoryID]
				
				# Location from dropdown 
				#locationID = self.parent.parent.parent.getChild("LineFields").getChild("SetupInformationContainer").getChild("Column1").getChild("Location").getChild("LocationDropdown").props.value	
				location = locationID
				
				controller = int(self.session.custom.clockNumber)
				facit = str(location) + ' ' + str(category) + ' Administrator'
				activity = 'Created New Line'
				
				logchange_parameters = {'assetID': lineID, 'changeDescription':activity, 'modifiedBy':controller, 'modifierRole':facit}
				
				system.db.runNamedQuery('Assets/Lines/LogChangeLine', logchange_parameters)
				
				self.parent.parent.parent.parent.getChild("LocationCategoryContainer").getChild("LineDisplay").refreshBinding('props.data')
				self.parent.parent.parent.parent.getChild("LocationCategoryContainer").getChild("LineDisplay").refreshBinding('props.data')
	
	except Exception as e:
		system.perspective.print("Error: {}".format(str(e)))

I am also having another error of the same kind on line 37 on the if statement as well

No closing quote.

The forum software event highlights it correctly :smiley:

Wow, that was annoying…

However another error has shown up on the line just below on line 38

if IDAllowed:
	    	parameters = {
	            'assetID': assetID,
	            'assetName': assetName,
	            'lineID': lineID,
	            'roleID': 1 if role_name == 'Primary' else 2,
	            'modifiedBy': modified,
	            'andonDisplay': andonDisplay
	        }

You also have a mix of tabs and spaces for indentation, which is a bad idea:

Fixed:

assetID = self.parent.parent.getChild("AssetIDDetails").getChild("IDDisplay").props.text	
assetName = self.parent.parent.getChild("AssetNameDetails").getChild("NameDisplay").props.text
lineID = self.parent.parent.getChild("LineIDDetails").getChild("IDDisplay").props.text
lineName = self.parent.parent.getChild("LineNameDetails").getChild("NameDropdown").props.value
locationID = self.parent.parent.getChild("LocationDetails").getChild("LocationDropdown").props.value
categoryID = self.parent.parent.getChild("CategoryDetails").getChild("CategoryDropdown").props.value
role_name= self.parent.parent.getChild("RoleAndWorkcenterContainer").getChild("RoleDropdown").props.value
andonDisplay = self.parent.parent.getChild("AndonDisplayDetails").getChild("AndonDisplay").props.text
roleID = 0
if role_name == 'Primary':
	roleID = 1
else:
	roleID = 2
modified = self.session.custom.clockNumber

try:
	IDAllowed = False

	if assetID == '':
		# Auto-generate Asset ID
		maxIDDataset = system.db.runNamedQuery('Assets/GetMaxID')
		if maxIDDataset.rowCount > 0:
			assetID = int(maxIDDataset[0]['Asset_ID']) + 1
		IDAllowed = True
	else:
		# Check if custom Asset ID already exists
		check = system.db.runNamedQuery('Assets/CheckExist', {'assetID': assetID})
		if check.rowCount > 0:
			raise Exception("ID already exists, try another ID")
		else:
			IDAllowed = True
	
	system.perspective.print("Now create asset")
	
	# --- Create asset if ID is allowed ---
	if IDAllowed:
		parameters = {
			'assetID': assetID,
			'assetName': assetName,
			'lineID': lineID,
			'roleID': 1 if role_name == 'Primary' else 2,
			'modifiedBy': modified,
			'andonDisplay': andonDisplay
		}

		result = system.db.runNamedQuery('Assets/CreateAsset', parameters)

		if result:
			# log change in Change_Log DB table
			# retrieve group ID given selected group name in dropdown menu
			# categoryID = self.parent.parent.parent.getChild("LineFields").getChild("SetupInformationContainer").getChild("Column2").getChild("Category").getChild("CategoryDropdown").props.value	
			categories = {1: 'Molding', 2: 'Paint', 3: 'Assembly', 4: 'Warehouse'}
			category = categories[categoryID]
			
			# Location from dropdown 
			#locationID = self.parent.parent.parent.getChild("LineFields").getChild("SetupInformationContainer").getChild("Column1").getChild("Location").getChild("LocationDropdown").props.value	
			location = locationID
			
			controller = int(self.session.custom.clockNumber)
			facit = str(location) + ' ' + str(category) + ' Administrator'
			activity = 'Created New Line'
			
			logchange_parameters = {'assetID': lineID, 'changeDescription':activity, 'modifiedBy':controller, 'modifierRole':facit}
			
			system.db.runNamedQuery('Assets/Lines/LogChangeLine', logchange_parameters)
			
			self.parent.parent.parent.parent.getChild("LocationCategoryContainer").getChild("LineDisplay").refreshBinding('props.data')
			self.parent.parent.parent.parent.getChild("LocationCategoryContainer").getChild("LineDisplay").refreshBinding('props.data')

except Exception as e:
	system.perspective.print("Error: {}".format(str(e)))

I believe that the error is coming somewhere from there, I will go through and redo the formatting

Right-click in the editor and turn on Whitespace. It will show the difference between tabs and spaces.