中文
Continue in the app
Be The First To Get Support Updates
Want to know about the latest technical content and software updates?

操作方法:使用 ArcGIS API for Python 将一个 Portal for ArcGIS 或 ArcGIS Online 帐户的 Operations Dashboard 内容复制到另一个帐户

摘要

组织通常会设置多个 Portal for ArcGIS 或 ArcGIS Online 帐户,以用于不同目的。 例如,组织可能需要两个帐户,一个用于内部,另一个用于公共访问。 在某些情况下,必须将一个帐户的内容复制到另一个帐户。 请参阅 Portal for ArcGIS:示例:复制内容,了解如何复制 Portal for ArcGIS 或 ArcGIS Online 项目。 也可以使用 ArcGIS API for Python 复制 Operation Dashboards 中的内容。

过程

按照以下步骤将一个 Portal for ArcGIS 或 ArcGIS Online 帐户的 Operations Dashboard 内容复制到另一个帐户:

  1. 导入所需的模块。
from arcgis.gis import GIS
from IPython.display import display
from getpass import getpass
  1. 声明输入参数以接收源 URL 和凭据。
source_portal = input("输入源门户:")
if source_portal == "":
source_portal = "arcgis.com"

source_admin = input("输入源管理用户名:")
source_admin_password = getpass("输入密码:")
source_owner = input("输入源所有者用户名:")
:
在控制台窗口中,对于 Portal for ArcGIS,将 Portal for ArcGIS URL 指定为 source_admin,而对于 ArcGIS Online,按 Enter 键将其留空。
  1. 声明输入参数以接收目标 URL 和凭据。
target_portal = input("输入目标门户:")
if target_portal == "":
target_portal = "arcgis.com"

target_admin = input("输入目标管理用户名:")
target_admin_password = getpass("输入密码:")
target_owner = input("输入目标所有者用户名:")
  1. 创建与源 URL 和目标 URL 的连接。
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("已连接至源和目标门户")
:
上述脚本不会进行认证检查。 如果已提供认证且 SSL 经过完全配置,则代码段 verify_cert 可以设置为 true:verify_cert=True
  1. 搜索在步骤 2 和步骤 3 中指定的所有者。
source_user = source.users.search(source_owner)
target_user = target.users.search(target_owner)
print("源用户:\t:\t" + source_user[0].username + "\t:\t" + source_user[0].role)
print("目标用户:\t:\t" + target_user[0].username + "\t:\t" + target_user[0].role)
  1. 在源 URL 中搜索指定所有者下的所有可用仪表板。
search_result = source.content.search(query="owner:"+str(source_owner), item_type="Dashboard")
search_result
  1. 为目标 URL 中的所有仪表板迭代“创建文件夹副本”进程。
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("已成功复制项目:%s" %(app.title))

print("完成")
步骤完成后的完整代码外观如以下脚本所示:
    from arcgis.gis import GIS
    from IPython.display import display
    from getpass import getpass
    
    source_portal = input("输入源门户 (machine.domain.com/webadaptor...针对 ArcGIS Online 留空)")
    if source_portal == "":
    source_portal = "arcgis.com"
    source_admin = input("输入源管理用户名:")
    source_admin_password = getpass("输入密码:")
    source_owner = input("输入源所有者用户名:")
    
    target_portal = input("输入目标门户 (machine.domain.com/webadaptor...针对 ArcGIS Online 留空)")
    if target_portal == "":
    target_portal = "arcgis.com"
    target_admin = input("输入目标管理用户名:")
    target_admin_password = getpass("输入密码:")
    target_owner = input("输入目标所有者用户名:")
    
    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("已连接至源和目标门户")
    
    source_user = source.users.search(source_owner)
    target_user = target.users.search(target_owner)
    print("源用户:\t:\t" + source_user[0].username + "\t:\t" + source_user[0].role)
    print("目标用户:\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("已成功复制项目:%s" %(app.title))
    
    print("完成")

    相关信息

    上次修改时间: 3/12/2019

    文章 ID: 000018924

    软件: ArcGIS API for Python 1.6