Skip to content

Instantly share code, notes, and snippets.

@HaydenElza
Last active March 6, 2024 05:26
Show Gist options
  • Save HaydenElza/61ca769b1652d5ee8421415fa13b63fc to your computer and use it in GitHub Desktop.
Save HaydenElza/61ca769b1652d5ee8421415fa13b63fc to your computer and use it in GitHub Desktop.
Given an app item ID, transfer ownership of the app and all associated items in ArcGIS Online.
"""Transfer Ownership of App and Associated Web Maps and Feature Layers.
Given an app item ID, transfer ownership of the app and all associated items.
"""
from arcgis.gis import *
# Parameters
app_item_id = "69fca75a5aca4972b0c86c5f7ea51995"
destination_account = "someaccountname"
destination_folder = "new folder"
def get_items(gis, app_item_id:str) -> list:
"""Get list of items that need to be transfered."""
# Initialize item list
item_ids_to_transfer = set([app_item_id])
# Get app
app_item = gis.content.get(app_item_id)
# Get web map ID
app_data = app_item.get_data()
webmap_item_id = app_data['values']['webmap']
# Add web map ID to set
item_ids_to_transfer.add(webmap_item_id)
# Get web map
webmap_item = gis.content.get(webmap_item_id)
# Get web map data
webmap_data = webmap_item.get_data()
# Add feature layer IDs to set
for layer in webmap_data['operationalLayers']:
if layer['layerType'] == "ArcGISFeatureLayer":
item_ids_to_transfer.add(layer['itemId'])
if layer['layerType'] == "GroupLayer":
for child_layer in layer['layers']:
item_ids_to_transfer.add(child_layer['itemId'])
# Generate list of item objects from ID set
items = [gis.content.get(item_id) for item_id in item_ids_to_transfer]
return items
def transfer_ownership(items:list, destination_account:str, destination_folder:str) -> None:
"""Transfer ownership of items to destination account and place in
destination folder.
"""
# Create destination folder
gis.content.create_folder(destination_folder)
for item in items:
item.reassign_to(destination_account, target_folder=destination_folder)
return
# Setup
gis = GIS("home")
# Get items
items = get_items(gis, app_item_id)
# Transfer ownership
transfer_ownership(items, destination_account, destination_folder)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment