Español

Cómo: Copiar contenido del Operations Dashboard de una cuenta de Portal for ArcGIS o ArcGIS Online a otra con ArcGIS API for Python

Resumen

Es habitual que una organización tenga más de una cuenta de Portal for ArcGIS o ArcGIS Online para distintos fines. Por ejemplo, una organización puede necesitar dos cuentas: una para uso interno y otra para acceso público. En determinados casos, el contenido de una cuenta se debe copiar a la otra. Consulte Portal for ArcGIS: Ejemplo: Copiar contenido para ver los pasos para copiar elementos de Portal for ArcGIS o ArcGIS Online. También es posible copiar contenido desde Operation Dashboard con ArcGIS API for Python.

Procedimiento

Siga estos pasos para copiar contenido del Operations Dashboard de una cuenta de Portal for ArcGIS o ArcGIS Online a otra:

  1. Importe los módulos necesarios.
from arcgis.gis import GIS
from IPython.display import display
from getpass import getpass
  1. Declare los parámetros de entrada para recibir la URL y las credenciales de origen.
source_portal = input("Enter Source Portal : ")
if source_portal == "":
    source_portal = "arcgis.com"

source_admin = input("Enter Source Admin Username: ")
source_admin_password = getpass("Enter password: ")
source_owner = input("Enter Source Owner Username: ")
 
Nota:
En la ventana de la consola, especifique la URL de Portal for ArcGIS como el source_admin de Portal for ArcGIS o déjelo en blanco pulsando Intro en el caso de ArcGIS Online.
  1. Declare los parámetros de entrada para recibir la URL y las credenciales de destino.
target_portal = input("Enter Target Portal : ")
if target_portal == "":
    target_portal = "arcgis.com"

target_admin = input("Enter Target Admin Username: ")
target_admin_password = getpass("Enter password: ")
target_owner = input("Enter Target Owner Username: ")
  1. Cree una conexión a las URL de origen y destino.
source = GIS("https://" + source_portal, source_admin, source_admin_password, verify_cert=False)
target = GIS("https://" + target_portal, target_admin, target_admin_password, verify_cert=False)
print("Connected to Source and Target Portals")
Nota:
El script anterior no comprueba la certificación. Si se proporciona certificación y la SSL está totalmente configurada, puede establecer el segmento de código verify_cert en true: verify_cert=True.
 
  1. Busque los propietarios especificados en los pasos 2 y 3.
source_user = source.users.search(source_owner)
target_user = target.users.search(target_owner)
print("Source User: \t:\t" + source_user[0].username + "\t:\t" + source_user[0].role)
print("Target User: \t:\t" + target_user[0].username + "\t:\t" + target_user[0].role)
  1. Busque todos los cuadros de mando disponibles para el propietario especificado en la URL de origen.
search_result = source.content.search(query="owner:"+str(source_owner), item_type="Dashboard")
search_result
  1. Itere el proceso 'create copy to a folder' para cada cuadro de mando encontrado en la URL de destino.
for item in search_result:
    app=source.content.get(item.id)
    data = [app]
    target.content.clone_items(data, "dashboards", copy_data=True, search_existing_items=False)
    print("copied item successfully: %s" %(app.title))

print("Done")

El siguiente script muestra el aspecto del código entero tras completar los pasos:
    from arcgis.gis import GIS
    from IPython.display import display
    from getpass import getpass
    
    source_portal = input("Enter Source Portal (machine.domain.com/webadaptor...leave blank for ArcGIS Online)")
    if source_portal == "":
        source_portal = "arcgis.com"
    source_admin = input("Enter Source Admin Username: ")
    source_admin_password = getpass("Enter password: ")
    source_owner = input("Enter Source Owner Username: ")
    
    target_portal = input("Enter Target Portal (machine.domain.com/webadaptor...leave blank for ArcGIS Online)")
    if target_portal == "":
        target_portal = "arcgis.com"
    target_admin = input("Enter Target Admin Username: ")
    target_admin_password = getpass("Enter password: ")
    target_owner = input("Enter Target Owner Username: ")
    
    source = GIS("https://" + source_portal, source_admin, source_admin_password, verify_cert=False)
    target = GIS("https://" + target_portal, target_admin, target_admin_password, verify_cert=False)
    print("Connected to Source and Target Portals")
    
    source_user = source.users.search(source_owner)
    target_user = target.users.search(target_owner)
    print("Source User: \t:\t" + source_user[0].username + "\t:\t" + source_user[0].role)
    print("Target User: \t:\t" + target_user[0].username + "\t:\t" + target_user[0].role)
    
    search_result = source.content.search(query="owner:"+str(source_owner), item_type="Dashboard")
    search_result
    
    for item in search_result:
        app=source.content.get(item.id)
        data = [app]
        target.content.clone_items(data, "dashboards", copy_data=True, search_existing_items=False)
        print("copied item successfully: %s" %(app.title))
    
    print("Done")

     

    Información relacionada