I'm having some trouble with updating layers using the ArcGIS API for Python. I had updated a map image layer with some new sublayers, and wanted to make sure the new layers were applied everywhere the original MIL is used. I wrote a notebook to find and remove the instances of this MIL and re-add to the map. This worked for most of the maps, but enough didn't that I ended up having to check them all manually. I'll step through my code below if anyone can tell me if I'm missing something.
First, I listed all the web maps owned by our admin user and created an Item object for the MIL:
maps = portal.content.search("type: Web Map NOT Application owner: GeoNexusAdmin@PENNICHUCK", max_items = 100) newLayer = portal.content.search('id:b8c15eb2b33b4c0bbb7dfa0011cb28be')
Next, I iterated through the maps and looked for the MIL in question. If it was found, I removed and replaced the layer:
for m in maps: map = arcgis.mapping.WebMap(m) #loop through layers in each map layers = map.layers for l in layers: #store layer index number layerNum = map.layers.index(l) #if a matching itemid is found, remove layer and add it back in if 'itemId' in layers[layerNum]: if layers[layerNum]['itemId'] =='b8c15eb2b33b4c0bbb7dfa0011cb28be': map.remove_layer(map.layers[layerNum]) map.add_layer(newLayer) #print map title to confirm print(m.title)
Almost every map that was printed in the output list updated the MIL succesfully, but about 3 did not. Is this a glitch in the system, or do I need to make some tweaks to my code? At the very least, it would be nice to be able to identify and list the maps that did not update successfully.