Traceback (most recent call last): File "C:\Users\talmeida\AppData\Local\ESRI\Desktop10.1\AssemblyCache\{BB229966-100D-4482-A3FE-B298BD262597}\AddPoints_addin.py", line 55, in onMouseDownMap add_fields = add_fields.split(';') AttributeError: 'list' object has no attribute 'split'import arcpy import pythonaddins import os from arcpy import env class Add_points(object): """Implementation for AddPoints_addin.Add_points (Tool)""" def __init__(self): self.enabled = True self.cursor = 3 # Can set to "Line", "Circle" or "Rectangle" for interactive shape drawing and to activate the onLine/Polygon/Circle event sinks. def onMouseDownMap(self, x, y, button, shift): fc = "TonyTwoWay.DBO.TT" workspace = r"C:\Users\talmeida\AppData\Roaming\ESRI\Desktop10.1\ArcCatalog\Connection to dsd15_sqlexpress.sde" arcpy.env.overwriteOutput = True #arcpy.ChangeVersion_management('TonyTwoWay.DBO.TT','TRANSACTIONAL','dbo.DEFAULT', "") # Start an edit session. Must provide the worksapce. edit = arcpy.da.Editor(workspace) # Edit session is started without an undo/redo stack for versioned data # (for second argument, use False for unversioned data) edit.startEditing(True) # Start an edit operation edit.startOperation() list = [] with arcpy.da.SearchCursor(fc, ["AddressID"]) as cursor: for row in cursor: try: if "CC" in row[0]: list.append(int(row[0].strip("CC"))) except TypeError: pass del cursor list.sort() AddressID = list[-1] + 1 AddressID = 'CC' + str(AddressID) row_values = [(x, y, (x, y), AddressID)] cursor = arcpy.da.InsertCursor(fc, ["X_Coord", "Y_Coord", "SHAPE@XY", "ADDRESSID"]) for row in row_values: cursor.insertRow(row) del cursor ##################################################### fcTarget = "TonyTwoWay.DBO.TT" fcJoin = "testParcelsAdmint" add_fields = ["ACCOUNT","SiteNum","OwnerName","SiteAddres","SiteNumSfx","predir","StreetType","SubName"] # fix args if type(add_fields) != list: # from script tool add_fields = add_fields.split(';') # do not need this scratch file fcOutput = r'in_memory\temp_join' arcpy.SpatialJoin_analysis(fcJoin, fcTarget,fcOutput, 'JOIN_ONE_TO_MANY') # grab oid field from points oid_t = arcpy.Describe(fcTarget).OIDFieldName # init rowW and rowR curR = arcpy.SearchCursor(fcOutput) join_dict = dict([(r.JOIN_FID,[r.getValue(f) for f in add_fields]) for r in curR]) del curR # Now update the new target curW = arcpy.UpdateCursor(fcTarget) for row in curW: t_oid = row.getValue(oid_t) if t_oid in join_dict: for f in add_fields: row.setValue(f, join_dict[t_oid][add_fields.index(f)]) curW.updateRow(row) del row, curW arcpy.AddMessage('Updated all records sucussefully') # Stop the edit operation. edit.stopOperation() # Stop the edit session and save the changes edit.stopEditing(True) arcpy.RefreshActiveView() passimport arcpy arcpy.env.overwriteOutput = True fcTarget = "TonyTwoWay.DBO.TT" fcJoin = "testParcelsAdmint" add_fields = ["ACCOUNT","SiteNum","OwnerName","SiteAddres","SiteNumSfx","predir","StreetType","SubName"] # fix args if type(add_fields) != list: # from script tool add_fields = add_fields.split(';') # do not need this scratch file fcOutput = r'in_memory\temp_join' arcpy.SpatialJoin_analysis(fcJoin, fcTarget,fcOutput, 'JOIN_ONE_TO_MANY') # grab oid field from points oid_t = arcpy.Describe(fcTarget).OIDFieldName # init rowW and rowR curR = arcpy.SearchCursor(fcOutput) join_dict = dict([(r.JOIN_FID,[r.getValue(f) for f in add_fields]) for r in curR]) del curR # Now update the new target curW = arcpy.UpdateCursor(fcTarget) for row in curW: t_oid = row.getValue(oid_t) if t_oid in join_dict: for f in add_fields: row.setValue(f, join_dict[t_oid][add_fields.index(f)]) curW.updateRow(row) del row, curW arcpy.AddMessage('Updated all records sucussefully')
Solved! Go to Solution.
if type(add_fields) != list:
if not isinstance(add_fields, list):
if isinstance(add_fields, basestring):
if type(add_fields) != list:
if not isinstance(add_fields, list):
Traceback (most recent call last):
File "C:\Users\talmeida\AppData\Local\ESRI\Desktop10.1\AssemblyCache\{BB229966-100D-4482-A3FE-B298BD262597}\AddPoints_addin.py", line 53, in onMouseDownMap
if not isinstance(add_fields, list):
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
if isinstance(add_fields, basestring):
Traceback (most recent call last):
File "C:\Users\talmeida\AppData\Local\ESRI\Desktop10.1\AssemblyCache\{BB229966-100D-4482-A3FE-B298BD262597}\AddPoints_addin.py", line 83, in onMouseDownMap
edit.stopOperation()
SystemError: error return without exception set
Traceback (most recent call last):
File "C:\Users\talmeida\AppData\Local\ESRI\Desktop10.1\AssemblyCache\{BB229966-100D-4482-A3FE-B298BD262597}\AddPoints_addin.py", line 82, in onMouseDownMap
edit.stopOperation()
SystemError: error return without exception setimport arcpy
import pythonaddins
import os
from arcpy import env
class Add_points(object):
"""Implementation for AddPoints_addin.Add_points (Tool)"""
def __init__(self):
self.enabled = True
self.cursor = 3 # Can set to "Line", "Circle" or "Rectangle" for interactive shape drawing and to activate the onLine/Polygon/Circle event sinks.
def onMouseDownMap(self, x, y, button, shift):
fc = "TonyTwoWay.DBO.TT"
workspace = r"C:\Users\talmeida\AppData\Roaming\ESRI\Desktop10.1\ArcCatalog\Connection to dsd15_sqlexpress.sde"
arcpy.env.overwriteOutput = True
#arcpy.ChangeVersion_management('TonyTwoWay.DBO.TT','TRANSACTIONAL','dbo.DEFAULT', "")
# Start an edit session. Must provide the worksapce.
edit = arcpy.da.Editor(workspace)
# Edit session is started without an undo/redo stack for versioned data
# (for second argument, use False for unversioned data)
edit.startEditing(True)
# Start an edit operation
edit.startOperation()
CC_list = []
with arcpy.da.SearchCursor(fc, ["AddressID"]) as cursor:
for row in cursor:
try:
if "CC" in row[0]:
CC_list.append(int(row[0].strip("CC")))
except TypeError:
pass
del cursor
CC_list.sort()
AddressID = CC_list[-1] + 1
AddressID = 'CC' + str(AddressID)
row_values = [(x, y, (x, y), AddressID)]
cursor = arcpy.da.InsertCursor(fc, ["X_Coord", "Y_Coord", "SHAPE@XY", "ADDRESSID"])
for row in row_values:
cursor.insertRow(row)
del cursor
#####################################################
fcTarget = "TonyTwoWay.DBO.TT"
fcJoin = "testParcelsAdmint"
add_fields = ["ACCOUNT","SiteNum","OwnerName","SiteAddres","SiteNumSfx","SiteStreet","predir","StreetType","SubName"]
# fix args
if not isinstance(add_fields, list):
# from script tool
add_fields = add_fields.split(';')
# do not need this scratch file
fcOutput = r'in_memory\temp_join'
arcpy.SpatialJoin_analysis(fcJoin, fcTarget,fcOutput, 'JOIN_ONE_TO_MANY')
# grab oid field from points
oid_t = arcpy.Describe(fcTarget).OIDFieldName
# init rowW and rowR
curR = arcpy.SearchCursor(fcOutput)
join_dict = dict([(r.JOIN_FID,[r.getValue(f) for f in add_fields]) for r in curR])
del curR
# Now update the new target
curW = arcpy.UpdateCursor(fcTarget)
for row in curW:
t_oid = row.getValue(oid_t)
if t_oid in join_dict:
for f in add_fields:
row.setValue(f, join_dict[t_oid][add_fields.index(f)])
curW.updateRow(row)
del row, curW
arcpy.AddMessage('Updated all records sucussefully')
# Stop the edit operation.
edit.stopOperation()
# Stop the edit session and save the changes
edit.stopEditing(True)
arcpy.RefreshActiveView()
pass