本文整理汇总了Python中portalpy.Portal.item方法的典型用法代码示例。如果您正苦于以下问题:Python Portal.item方法的具体用法?Python Portal.item怎么用?Python Portal.item使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类portalpy.Portal
的用法示例。
在下文中一共展示了Portal.item方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from portalpy import Portal [as 别名]
# 或者: from portalpy.Portal import item [as 别名]
def main():
exit_err_code = 1
# Print/get script arguments
results = print_args()
if not results:
sys.exit(exit_err_code)
portal_address, adminuser, password, item_ids = results
total_success = True
file_type = "serviceDefinition"
print "=" * 150
print "Publish Hosted Services"
print "=" * 150
try:
# Create portal connection
portal = Portal(portal_address, adminuser, password)
# Get ids of the source items to publish
valid_items = True
if not item_ids:
print "\n- Searching for valid source items to publish..."
item_ids = get_source_item_ids(portal)
else:
print "\n- Validating specified source item guids..."
for item_id in item_ids:
if not is_valid_source_item(portal, item_id):
valid_items = False
print "ERROR: Item with GUID {} does not exist or is not a valid source type.".format(item_id)
if not valid_items:
print "ERROR: At least one specified GUID is invalid. Stopping script execution."
sys.exit(exit_err_code)
num_src_items = len(item_ids)
startTime = datetime.now()
print "\n- Will attempt to publish the following {} source item(s)...\n".format(num_src_items)
for item_id in item_ids:
print_item_info(portal.item(item_id))
# TODO: may want to prompt user if they want to continue at this point so
# they can review the items before trying to publish
print "\n- Publish the source items..."
i = 0
grand_total_pub_jobs = 0 # Total number of jobs needed to publish all source items
grand_total_pub_jobs_succeed = 0
grand_total_skipped_transfer = 0
for item_id in item_ids:
i += 1
item = portal.item(item_id)
print "\n{}".format("-" * 100)
print "{} out of {}\n".format(i, num_src_items)
print_item_info(item)
total_pub_jobs, total_pub_jobs_success, total_skipped_transfer = publish_source_item(
portal, item_id, file_type
)
grand_total_pub_jobs += total_pub_jobs
grand_total_pub_jobs_succeed += total_pub_jobs_success
grand_total_skipped_transfer += total_skipped_transfer
endTime = datetime.now()
print
print "-" * 100
print "Summary"
print "-" * 100
print "Total number of..."
print "Source items to publish: {}".format(num_src_items)
print "Publishing jobs: {}".format(grand_total_pub_jobs)
print "Publishing jobs completed: {}".format(grand_total_pub_jobs_succeed)
print "Publishing jobs that failed: {}".format(grand_total_pub_jobs - grand_total_pub_jobs_succeed)
print 'Services where info transfer was skipped because "original" service item did not exist: {}'.format(
grand_total_skipped_transfer
)
print "\nStart time: {}".format(startTime)
print "End time: {}".format(endTime)
print "\nDone."
except:
total_success = False
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate information together concerning the error
# into a message string
pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])
#.........这里部分代码省略.........
示例2: main
# 需要导入模块: from portalpy import Portal [as 别名]
# 或者: from portalpy.Portal import item [as 别名]
def main():
totalSuccess = True
# -------------------------------------------------
# Check arguments
# -------------------------------------------------
results = check_args()
if not results:
sys.exit(exitErrCode)
server, port, adminuser, password, use_ssl, output_file, owners = results
if debug:
print server, port, adminuser, password, use_ssl, output_file, owners
if use_ssl:
protocol = 'https'
else:
protocol = 'http'
try:
# Create connection to portal; need to get service item owner information
portal = Portal('https://' + server + ':7443/arcgis', adminuser, password)
# Verify if user specify owners exist
invalid_owners = get_invalid_owners(portal, owners)
if len(invalid_owners) > 0:
print '\nThe following owners do not exist. Exiting script: \n{}'.format(', '.join(invalid_owners))
totalSuccess = False
else:
# Get all services that exist on server
all_services = getServiceList(server, port, adminuser, password)
all_services = [service.replace('//', '/') for service in all_services]
# Create collection of only hosted services
print '\n{}'.format('=' * 80)
print 'Extracting service definition information (editing, sync, export, tracking)'
print 'for hosted feature services that meet filter criteria.'
print '{}\n'.format('=' * 80)
definitions = {}
for service in all_services:
folder, serviceNameType = parseService(service)
if serviceNameType.endswith('.FeatureServer'):
portal_props = getServicePortalProps(server, port, adminuser, password, folder, serviceNameType)
if portal_props:
if portal_props['isHosted']:
portal_items = portal_props['portalItems']
for portal_item in portal_items: #NOTE: for hosted services there should only be one portal item
do_write = True
item_id = portal_item['itemID']
item = portal.item(item_id)
if item is None:
print '\tPortal item {} for service does not exist.'.format(item_id)
item_owner = None
else:
item_owner = item['owner']
if owners:
if item_owner not in owners:
do_write = False
if do_write:
print '{} ({})...'.format(service, item_owner)
definition = getHostedServiceDefinition(server, port, adminuser, password, folder, serviceNameType)
definitions[service] = {'owner': item_owner, 'updateDefinition': definition}
# Write info to json file
print '\nWriting "definition" information for {} services to file {}'.format(len(definitions), output_file)
json.dump(definitions, open(output_file,'w'))
print '\nDone.\n'
except:
totalSuccess = False
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate information together concerning the error into a message string
pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])
# Print Python error messages for use in Python / Python Window
print
print "***** ERROR ENCOUNTERED *****"
print pymsg + "\n"
finally:
if totalSuccess:
sys.exit(0)
else:
sys.exit(1)
示例3: main
# 需要导入模块: from portalpy import Portal [as 别名]
# 或者: from portalpy.Portal import item [as 别名]
def main():
exit_err_code = 1
# Print/get script arguments
results = print_args()
if not results:
sys.exit(exit_err_code)
portal_address, adminuser, password, scene_parameter_folder, item_ids = results
total_success = True
print '=' * 150
print 'Publish Hosted Scene Services'
print '=' * 150
try:
# Create portal connection
portal = Portal(portal_address, adminuser, password)
# Get ids of the source items to publish
valid_items = True
if not item_ids:
print '\n- Searching for valid source items to publish...'
item_ids = get_source_item_ids(portal)
else:
print '\n- Validating specified source item guids...'
for item_id in item_ids:
if not is_valid_source_item(portal, item_id):
valid_items = False
print 'ERROR: Item with GUID {} does not exist, ' + \
'is not a hosted feature service, or does not ' + \
'have an associated scene service'.format(item_id)
if not valid_items:
print 'ERROR: At least one specified GUID is invalid. Stopping script execution.'
sys.exit(exit_err_code)
print '\n- Validating scene server parameter folder {}...'.format(scene_parameter_folder)
is_valid, msg = validate_scene_parameter_folder(portal, scene_parameter_folder, item_ids)
if not is_valid:
print msg
sys.exit(exit_err_code)
num_src_items = len(item_ids)
startTime = datetime.now()
print '\n- Will attempt to publish the following {} source item(s)...\n'.format(num_src_items)
for item_id in item_ids:
print_item_info(portal.item(item_id))
# TODO: may want to prompt user if they want to continue at this point so
# they can review the items before trying to publish
print '\n- Publish the source items...'
i = 0
grand_total_pub_jobs = 0 #Total number of jobs needed to publish all source items
grand_total_pub_jobs_succeed = 0
grand_total_skipped_transfer = 0
os.chdir(scene_parameter_folder)
for item_id in item_ids:
i += 1
item = portal.item(item_id)
print '\n{}'.format('-' * 100)
print '{} out of {}\n'.format(i, num_src_items)
print_item_info(item)
parameter_file = item['url'].split('/')[-2] + '_sceneserver.json'
print 'Scene service publishing parameter file: {}'.format(parameter_file)
publish_parameters = json.load(open(parameter_file))
total_pub_jobs, total_pub_jobs_success, total_skipped_transfer = \
publish_source_item(portal,
item_id,
file_type,
publish_parameters=publish_parameters,
output_type=output_type)
grand_total_pub_jobs += total_pub_jobs
grand_total_pub_jobs_succeed += total_pub_jobs_success
grand_total_skipped_transfer += total_skipped_transfer
endTime = datetime.now()
print
print '-' * 100
print 'Summary'
print '-' * 100
print 'Total number of...'
print 'Source items to publish: {}'.format(num_src_items)
print 'Publishing jobs: {}'.format(grand_total_pub_jobs)
print 'Publishing jobs completed: {}'.format(grand_total_pub_jobs_succeed)
print 'Publishing jobs that failed: {}'.format(grand_total_pub_jobs - grand_total_pub_jobs_succeed)
print 'Services where info transfer was skipped because "original" service item did not exist: {}'.format(grand_total_skipped_transfer)
#.........这里部分代码省略.........
示例4: main
# 需要导入模块: from portalpy import Portal [as 别名]
# 或者: from portalpy.Portal import item [as 别名]
def main():
output_root = None
# Get script parameters
results = check_args()
if not results:
sys.exit(0)
portal_address, adminuser, password, src_ids = results
try:
# Create portal connection object
portal = Portal(portal_address, adminuser, password)
# Check if any specified GUIDs do not exist
invalid_guids = validate_guids(portal, src_ids)
if len(invalid_guids) > 0:
raise Exception(
'ERROR: The following portal items do not exist: {}'.format(
invalid_guids))
# Create list of users
users = [org_user['username'] for org_user in portal.org_users()]
target_users = [user for user in users if user not in exclude_users]
# -----------------------------------------------------------------
# Extract portal items
# -----------------------------------------------------------------
print '\n\n{}\nExtracting select portal items...\n{}\n'.format(
sec_char * sec_len, sec_char * sec_len)
# Create temporary extract folder in OS users' temp directory
output_root = os.path.join(tempfile.gettempdir(),
os.path.basename(
sys.argv[0]).split('.')[0] + '_Extract' )
os.makedirs(output_root)
print 'Extract folder: {}'.format(output_root)
# Extract specified portal item(s)
for src_id in src_ids:
src_item = portal.item(src_id)
os.chdir(output_root)
print '- Extracting item {} "{}" ({}) user account {}...'.format(
src_item['id'], src_item['title'],
src_item['type'], src_item['owner'])
PortalContentExtract.extract_item(
portal, src_item['id'],
src_item['owner'])
# Create list of paths to individual extracted portal item folders
src_item_paths = [os.path.join(output_root,
src_id) for src_id in src_ids]
# -----------------------------------------------------------------
# Publish extracted portal items for each user
# -----------------------------------------------------------------
print '\n\n{}\nPublish extracted items to each portal' \
'user account...\n{}'.format(sec_char * sec_len,
sec_char * sec_len)
print 'NOTE: not publishing to the following users:'
print exclude_users
for target_user in target_users:
print '\n\nUser Account: {}'.format(target_user)
# Get info about user folders
target_user_folders = portal.folders(target_user)
for src_item_path in src_item_paths:
# Get info about the source item
os.chdir(src_item_path)
src_item_json = json.load(open('item.json'))
item_title = src_item_json['title']
item_type = src_item_json['type']
item_id = src_item_json['id']
item_owner = src_item_json['owner']
item_folder_id = src_item_json['ownerFolder']
# Create folder in user account for item
item_folder_name = get_folder_name(portal, item_owner,
item_folder_id)
if item_folder_name:
if not has_folder(portal, target_user, item_folder_name):
print 'Creating target folder "{}" in account ' \
'{}...'.format(item_folder_name, target_user)
portal.create_folder(target_user, item_folder_name)
# Check if user already owns item
user_items = portal.search(
q='owner:{} AND type:{} AND title:{}'.format(
target_user, item_type, item_title))
# Add item if item does not exist in user account or
# update item if it already exists
if len(user_items) == 0:
print '\n- Add item "{}" ({}) to user account {}...'.format(
item_title, item_type,
portal.logged_in_user()['username'])
#.........这里部分代码省略.........
示例5: main
# 需要导入模块: from portalpy import Portal [as 别名]
# 或者: from portalpy.Portal import item [as 别名]
def main():
totalSuccess = True
# -------------------------------------------------
# Check arguments
# -------------------------------------------------
results = check_args()
if not results:
sys.exit(exitErrCode)
server, port, adminuser, password, use_ssl, output_folder, owners = results
if debug:
print server, port, adminuser, password, use_ssl, output_folder, owners
if use_ssl:
protocol = 'https'
else:
protocol = 'http'
try:
# Create connection to portal; need to get service item owner information
portal = Portal('https://' + server + ':7443/arcgis', adminuser, password)
# Verify if user specify owners exist
invalid_owners = get_invalid_owners(portal, owners)
if len(invalid_owners) > 0:
print '\nThe following owners do not exist. Exiting script: \n{}'.format(', '.join(invalid_owners))
totalSuccess = False
else:
# Get all services that exist on server
all_services = getServiceList(server, port, adminuser, password)
all_services = [service.replace('//', '/') for service in all_services]
# Create collection of only hosted services
print '\n{}'.format('=' * 80)
print 'Extracting scene service definition information for hosted scene services'
print 'that meet criteria.'
print '{}\n'.format('=' * 80)
total_scene_services = 0
total_files_created = 0
for service in all_services:
folder, serviceNameType = parseService(service)
if serviceNameType.endswith('.SceneServer'):
total_scene_services += 1
print '-' * 80
print 'Service: {}'.format(service)
portal_props = getServicePortalProps(server, port, adminuser, password, folder, serviceNameType)
if portal_props:
if portal_props['isHosted']:
portal_items = portal_props['portalItems']
for portal_item in portal_items: #NOTE: for hosted services there should only be one portal item
do_write = True
item_id = portal_item['itemID']
item = portal.item(item_id)
if item is None:
print '\tPortal item {} for service does not exist.'.format(item_id)
item_owner = None
else:
item_owner = item['owner']
item_title = item['title']
print 'Item id: {}, Owner: {}, Title: {}'.format(item_id, item_owner, item_title)
if owners:
if item_owner not in owners:
do_write = False
if do_write:
service_json = getServiceJSON(server, port, adminuser, password, folder, serviceNameType)
definition = {}
definition['name'] = serviceNameType.split('.')[0]
definition['serviceDescription'] = service_json
output_file = os.path.join(output_folder, serviceNameType.replace('.SceneServer', '') + '_sceneserver.json')
# Write info to json file
print '\nWriting "definition" to file {}'.format(output_file)
json.dump(definition, open(output_file,'w'))
total_files_created += 1
else:
print 'Does not meet criteria. Will not write "definition" file.'
print '-' * 80
print '\nTotal number of scene services: {}'.format(total_scene_services)
print 'Total number of scene service definition files created: {}'.format(total_files_created)
print '\nDone.\n'
#.........这里部分代码省略.........