#### Search for all content owned by a specific user (admin view) from agoTools.admin import Admin import agoTools.utilities myAgo = Admin(username=<username>, password=<password>) # replace with your username and password search = agoTools.utilities.searchPortal(myAgo.user.portalUrl, query='owner: username', token=myAgo.user.token) print search
'commentsEnabled': True, 'culture': item['culture'], } } if item['type'] == 'Web Map': print "getting data for " + str(item['title']) new_item['data'] = json.loads(agoAdmin.getData(item['id'])) return new_item args = {} args_portal = "https://nps.maps.arcgis.com" args_user = "******" args_password = "******" print ("Authenticating...") agoAdmin = Admin(args_user, args_portal, args_password) basemap_group = agoAdmin.findGroup("NPS Basemaps and Services") #print json.dumps(basemap_group) basemap_groupid = basemap_group['id'] #print basemap_groupid basemap_catalog = agoAdmin.AGOLGroupCatalog(basemap_group['id']) #basemap_catalog = agoAdmin.AGOLCatalog("id:5d2bfa736f8448b3a1708e1f6be23eed",False,None,True) #print(json.dumps(basemap_catalog[0].dict, indent=2)) #print(json.dumps([basemap.dict for basemap in basemap_catalog], indent=2)) print(json.dumps([fix_basemap(basemap.dict) for basemap in basemap_catalog], indent=2)) #print basemap_catalog #basemap_items = agoAdmin.AGOLCatalog(None,None,basemap_catalog)
line = line[:-1] return line parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-portal', '--portal') parser.add_argument('-folder', '--folder') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") if args.folder == None: args.folder = _raw_input("Folder (optional): ") args.portal = str(args.portal).replace("http://", "https://") agoAdmin = Admin(args.user, args.portal, args.password) if args.folder != None: fid = agoAdmin.getFolderID(args.folder) args.folder = fid folderid = '/' + args.folder agoAdmin.updateServiceItemsThumbnail(folderid)
parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-layerURL', '--layerURL') parser.add_argument('-layerID', '--layerID') parser.add_argument('-flagField', '--flagField') parser.add_argument('-portal', '--portal') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") args.portal = str(args.portal).replace("http://","https://") agoAdmin = Admin(args.user,args.portal,args.password) if (args.layerID==None and args.layerURL==None): args.layerID = _raw_input("layerID: ") if args.layerID!=None: args.layerURL=agoAdmin.getLayerURL(args.layerID) if args.flagField == None: args.flagField=_raw_input("field to update: ") agoAdmin.calculateAttachmentCount(args.layerURL,args.flagField)
parser.add_argument('-labelfield', '--labelfield') parser.add_argument('-jsonfile', '--jsonfile') parser.add_argument('-portal', '--portal') parser.add_argument('-fc', '--fc') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") args.portal = str(args.portal).replace("http://", "https://") agoAdmin = Admin(args.user, args.portal, args.password) if args.itemid == None: args.itemid = _raw_input("WebMap Id: ") if args.layerID != None: args.layerURL = agoAdmin.getLayerURL(args.layerID) if args.labelfield == None: args.labelfield = _raw_input("label field: ") if args.layerURL != None: pBookmarks = agoAdmin.createBookmarksFromLayer(args.layerURL, args.labelfield) elif args.fc != None: pBookmarks = agoAdmin.readBookmarksFromFeatureClass(
parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-layerURL', '--layerURL') parser.add_argument('-layerID', '--layerID') parser.add_argument('-flagField', '--flagField') parser.add_argument('-portal', '--portal') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") args.portal = str(args.portal).replace("http://", "https://") agoAdmin = Admin(args.user, args.portal, args.password) if (args.layerID == None and args.layerURL == None): args.layerID = _raw_input("layerID: ") if args.layerID != None: args.layerURL = agoAdmin.getLayerURL(args.layerID) if args.flagField == None: args.flagField = _raw_input("field to update: ") agoAdmin.calculateAttachmentCount(args.layerURL, args.flagField)
##Unicode is not encoding properly so convert all arcpy params adminAccount = str(adminAccount) adminPassword = str(adminPassword) className = str(className) classSnippet = str(classSnippet) userPrefix = str(userPrefix) userPassword = str(userPassword) userEmail = str(userEmail) userFirstName = str(userFirstName) userLastName = str(userLastName) userRole = str(userRole) provider = str(provider) arcpy.AddMessage("Logging in...") try: agoAdmin = Admin(adminAccount, password=adminPassword) except: arcpy.AddError( "Login failed. Please re-enter your admin username and password.") sys.exit() ##Get roles from the portal so we can translate the user-entered name to the role id that the api needs. ##Also confirm that the user-entered role is valid. allRoles = agoAdmin.getRoles() ##getRoles doesn't return predefined system roles, so we'll add those roles = { 'Administrator': 'org_admin', 'Publisher': 'org_publisher', 'Author': 'org_author', 'User': '******' }
#### Migrate a member to a new account within the same Organization # Requires admin role # Useful when migrating to Enterprise Logins # Reassigns all items/groups to new owner # Adds userTo to all groups which userFrom is a member from agoTools.admin import Admin myAgol = Admin('<username>') # Replace <username> your ADMIN account # un-comment one of the lines below, depending on which workflow you wish to use ### for migrating a single account... # myAgol.migrateAccount('<userFrom>', '<userTo>') # Replace with usernames between which you are moving items ### for migrating multiple accounts... # myAgol.migrateAccounts('<path to user mapping CSV>') # Replace with path to CSV file with col1=userFrom, col2=userTo
overwriteAll = False ##4) Modify licensing options in userEntitlements list if necessary.###### ##PRO (pick one): ## Basic = desktopBasicN ## Standard = destkopStdN ## Advanced = desktopAdvN ##Extensions (add all that apply): ## Spatial Analyst = SpatialAnalystN ## 3D Analyst = 3DAnalystN ## Network Analyst = 3DnetworkAnalystN ## Geostatistical Analyst = geostatAnalystN ## Data Reviewer: dataReviewerN ## Workflow Manager: workflowMgrN ## Data Interoperability: dataInteropN #################################### agoAdmin = Admin(adminUsername,password=adminPassword) if constrainDays: users=agoAdmin.getUsers(daysToCheck=constrainDays) else: users= agoAdmin.getUsers() print str(len(users)) + " users found." ## Set splitString to the character or string that is used to find defualt-formated fullName. splitString will be used as the point at which the username string is split on parsing. splitString="@" for user in users: if splitString in user["fullName"]: userName=user["username"] nameSplit= userName.split("@")
# Requires admin role. import csv, time, urllib, json from agoTools.admin import Admin agoAdmin = Admin('oevans') # Replace <username> with your admin username. token = agoAdmin.user.token # Requests first 100 invitations, script must be modified if >100 needed request = 'https://www.arcgis.com/sharing/rest/portals/self/invitations?f=json&start=1&num=100&token=' + token response = urllib.urlopen(request).read() invites = json.loads(response)['invitations'] outputFile = 'c:/temp/ArcGISOnline_PendingInvitations.csv' with open(outputFile, 'wb') as output: dataWriter = csv.writer(output, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) # Write header row. dataWriter.writerow(['Email', 'Username (if pre-defined)', 'Role', 'Invited by', 'Date Invited']) # Write user data. for invite in invites: dataWriter.writerow([invite['email'], invite['username'], invite['role'], invite['fromUsername'], time.strftime("%Y-%m-%d",time.gmtime(invite['created']/1000))])
### This script creates a spreadsheet with key informationa about each user. ### It expands on createUserListCSV.py by adding a field detailing the groups ### each user is a member of. # Requires admin role. import csv, time from agoTools.admin import Admin from agoTools.utilities import Utilities username = '******' password = '******' outputFile = 'c:/temp/users.csv' agoAdmin = Admin(username=username, password=password) agoUtilities = Utilities(username=username, password=password) print('Getting users.') users = agoAdmin.getUsers() roles = agoAdmin.getRoles() # Make a dictionary of the roles so we can convert custom roles from their ID to their associated name. roleLookup = {} for role in roles: roleLookup[role["id"]] = role['name'] # Get the users' groups. print('Getting each user\'s groups.') for user in users: user['groups'] = [] groups = agoUtilities.getUserGroups(user['username']) for group in groups: user['groups'].append(group['title'].encode('utf-8'))
line = input.readline() if not line: raise EOFError if line[-1] == '\n': line = line[:-1] return line parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-portal', '--portal') parser.add_argument('-group', '--group') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") if args.group == None: args.group = _raw_input("Group ID: ") args.portal = str(args.portal).replace("http://", "https://") agoAdmin = Admin(args.user, args.portal, args.password) agoAdmin.clearGroup(args.group)
parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-file', '--file') parser.add_argument('-portal', '--portal') args = parser.parse_args() inputFile = '' if args.file == None: args.file = _raw_input("CSV path: ") if args.user == None: args.user = _raw_input("Username:"******"Portal: ") args.portal = str(args.portal).replace("http://","https://") agoAdmin = Admin(args.user,args.portal,args.password) if args.file != None: inputFile=args.file with open(inputFile) as input: dataReader = csv.DictReader(input) items=AGOLItems(dataReader) agoAdmin.deleteItems(items.AGOLItems_list)
parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-portal', '--portal') parser.add_argument('-folder', '--folder') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") if args.folder == None: args.folder = _raw_input("Folder: ") args.portal = str(args.portal).replace("http://","https://") agoAdmin = Admin(args.user,args.portal,args.password) if args.folder!= None: fid = agoAdmin.getFolderID(args.folder) args.folder=fid folderid = '/' + args.folder agoAdmin.clearFolder(folderid)
#### Migrate person to a new account within the same Org # Requires admin role # Useful when migrating to Enterprise Logins. # Reassigns all items/groups to new owner and # adds userTo to all groups which userFrom is a member.''' from agoTools.admin import Admin myAgol = Admin('<username>') # Replace <username> your ADMIN account # for migrating a single account... myAgol.migrateAccount(myAgol, '<userFrom>', '<userTo>') # Replace with usernames between which you are moving items # for migrating a batch of accounts... myAgol.migrateAccounts(myAgol, <path to user mapping CSV>) # Replace with path to CSV file with col1=userFrom, col2=userTo
if args.file == None: args.file = _raw_input("CSV path: ") if args.user == None: args.user = _raw_input("Username:"******"Portal: ") if args.folder == None: args.folder = _raw_input("Folder (optional): ") args.portal = str(args.portal).replace("http://","https://") agoAdmin = Admin(args.user,args.portal,args.password) folderid=None if args.folder!= None: fid = agoAdmin.getFolderID(args.folder) args.folder=fid folderid = '/' + args.folder if args.file != None: inputFile=args.file with open(inputFile) as input: dataReader = csv.DictReader(input) mapServices=MapServices(dataReader) agoAdmin.registerItems(mapServices,folderid)
from agoTools.admin import Admin try: ##1) Enter ago org admin credentials as comandline parameter or enter them below in after the else###### if len(sys.argv) > 1: adminUsername = sys.argv[1] adminPassword = sys.argv[2] else: adminUsername = "******" adminPassword = "******" ##2) set userType to 'both' to enable Esri Access or 'arcgisonly' to disable userType = "both" -##3) Set constrainDays to a number greater than 0 to filter users created in the last n days. ## Leave set to 0 in to use default 10000 days - constrainDays = 0 #################################### agoAdmin = Admin(adminUsername,password=adminPassword) ##users = agoAdmin.getUsers() if constrainDays: users=agoAdmin.getUsers(daysToCheck=constrainDays) else: users= agoAdmin.getUsers() print str(len(users)) + " users found." for user in users: userName=user["username"] print userName response=agoAdmin.setUserType(userName, userType) except Exception as e: print e
# Requires admin role. import csv, time, datetime from agoTools.admin import Admin # User parameters: agoAdmin = Admin(<username>) # Replace <username> with your admin username. daysToCheck = 7 # Replace with number of days to check...1 checks past day, 7 checks past week, etc. groups = [<groupID1>, <groupID2>, ...] # Enter <groupIDs> of groups to which you want to add new users # Find the group ID with this tool: http://developers.arcgis.com/en/javascript/samples/portal_getgroupamd/ outputDir = 'c:/temp/' # Replace with path for report file outputDate = datetime.datetime.now().strftime("%Y%m%d") # Current date prefixed to filename. outputFile = outputDir + outputDate + '_AddNewUsers2Groups.csv' newUsers = agoAdmin.getUsers(daysToCheck=daysToCheck) userSummary = agoAdmin.addUsersToGroups(newUsers, groups) # print userSummary # Uncomment this line to see a summary of the group additions. # Reports false-negatives as of Nov 5, 2013. with open(outputFile, 'wb') as output: dataWriter = csv.writer(output, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) # Write header row. dataWriter.writerow(['Full Name', 'Email', 'Username', 'Role', 'Date Created']) # Write user data. for user in newUsers: dataWriter.writerow([user['fullName'], user['email'], user['username'], user['role'], time.strftime("%Y-%m-%d", time.gmtime(user['created']/1000))])
return line parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-portal', '--portal') parser.add_argument('-folder', '--folder') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") if args.folder == None: args.folder = _raw_input("Folder: ") args.portal = str(args.portal).replace("http://", "https://") agoAdmin = Admin(args.user, args.portal, args.password) if args.folder != None: fid = agoAdmin.getFolderID(args.folder) args.folder = fid folderid = '/' + args.folder agoAdmin.clearFolder(folderid)
## Basic = desktopBasicN ## Standard = destkopStdN ## Advanced = desktopAdvN ##Extensions (add all that apply): ## Spatial Analyst = SpatialAnalystN ## 3D Analyst = 3DAnalystN ## Network Analyst = 3DnetworkAnalystN ## Geostatistical Analyst = geostatAnalystN ## Data Reviewer: dataReviewerN ## Workflow Manager: workflowMgrN ## Data Interoperability: dataInteropN #################################### userEntitlements = ["desktopAdvN","3DAnalystN","dataReviewerN","geostatAnalystN","networkAnalystN","spatialAnalystN","workflowMgrN","dataInteropN"] agoAdmin = Admin(adminUsername,password=adminPassword) users = agoAdmin.getUsers() ents = agoAdmin.getEntitlements() newUsers = [] for user in users: if overwriteAll == False: found = False for ent in ents: if user["username"] == ent["username"]: found = True break if found == False: newUsers.append(user) ## print user["username"] else:
# Requires admin role. import csv, time from agoTools.admin import Admin agoAdmin = Admin('<username>') # Replace <username> with your admin username. outputFile = 'c:/temp/users.csv' users = agoAdmin.getUsers() roles = agoAdmin.getRoles() #Make a dictionary of the roles so we can convert custom roles from their ID to their associated name. roleLookup = {} for role in roles: roleLookup[role["id"]] = role["name"] with open(outputFile, 'wb') as output: dataWriter = csv.writer(output, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) # Write header row. dataWriter.writerow( ['Full Name', 'Email', 'Username', 'Role', 'Date Created']) # Write user data. for user in users: #get role name from the id. If it's not in the roles, it's one of the standard roles so just use it. roleID = user['role'] roleName = roleLookup.get(roleID, roleID) dataWriter.writerow([ user['fullName'].encode('utf-8'), user['email'].encode('utf-8'), user['username'].encode('utf-8'), roleName,
parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-file', '--file') parser.add_argument('-portal', '--portal') args = parser.parse_args() inputFile = '' if args.file == None: args.file = _raw_input("CSV path: ") if args.user == None: args.user = _raw_input("Username:"******"Portal: ") args.portal = str(args.portal).replace("http://", "https://") agoAdmin = Admin(args.user, args.portal, args.password) if args.file != None: inputFile = args.file with open(inputFile) as input: dataReader = csv.DictReader(input) users = UsersAttributes(dataReader) agoAdmin.updateUserRoles(users)
parser.add_argument('-file', '--file') parser.add_argument('-portal', '--portal') args = parser.parse_args() inputFile = '' if args.file == None: args.file = _raw_input("CSV path: ") if args.user == None: args.user = _raw_input("Username:"******"Group ID:") if args.portal == None: args.portal = _raw_input("Portal: ") args.portal = str(args.portal).replace("http://","https://") agoAdmin = Admin(args.user,args.portal,args.password) if args.file != None: inputFile=args.file with open(inputFile) as input: dataReader = csv.DictReader(input) items=AGOLItems(dataReader) agoAdmin.shareItems(items.AGOLItems_list,args.groupID)
### Lists out the admins and members of the first group found by the ### specified search term. from agoTools.admin import Admin username = '******' password = '******' groupSearch = 'Mission Operations' myAdmin = Admin(username=username, password=password) groupInfo = myAdmin.findGroup(groupSearch) groupMembers = myAdmin.getUsersInGroup(groupInfo['id']) print('Users in {}'.format(groupInfo['title'])) for admin in groupMembers['admins']: print(' {} - Admin'.format(admin)) for user in groupMembers['users']: print(' {} - Member'.format(user))
# Obtain AGOL instance credentials from a non-repo file in this directory. try: from credentials import * except: print "./credentials.py missing" sys.exit(0) # Generate AGOL instance URL from AGOL subdomain. portalURL = 'https://' + agolSubdomain + '.maps.arcgis.com' # Specify credit quota creditQuota = 5000 # Get users agolAdmin = Admin(username,portalURL,password) # Replace <username> with your admin username. users = agolAdmin.getUsers() # Look for users where assignedCredits is -1, and set a quota for them. for user in users: # Does the user have an assignedCredits value assigned? If not, then there is a problem... if u'assignedCredits' in user: # Has no credit quota been set for the user? (-1 means no quota.) if user[u'assignedCredits'] = -1: # Set credit quota print u'Setting creit quota for' + user[u'username'] # TODO: Set the actual quota... else: print user[u'username'] + u'has no assignedCredits value!'
# Requires admin role. import csv, time from agoTools.admin import Admin agoAdmin = Admin('<username>') # Replace <username> with your admin username. users = agoAdmin.getUsers() outputFile = 'c:/temp/users.csv' with open(outputFile, 'wb') as output: dataWriter = csv.writer(output, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) # Write header row. dataWriter.writerow(['Full Name', 'Email', 'Username', 'Role', 'Date Created']) # Write user data. for user in users: dataWriter.writerow([user['fullName'].encode('utf-8'), user['email'].encode('utf-8'), user['username'].encode('utf-8'), user['role'], time.strftime("%Y-%m-%d",time.gmtime(user['created']/1000))])
#### Move all items from one account to another, reassign ownership of all groups, or add user to another user's groups # Requires admin role # If you want to do all three tasks at once, see migrateAccount or migrateAccounts functions from agoTools.admin import Admin agoAdmin = Admin(<username>) # Replace <username> with your admin username agoAdmin.reassignAllUser1ItemsToUser2(agoAdmin, <userFrom>, <userTo>) #Replace with your current and new account usernames agoAdmin.reassignAllGroupOwnership(agoAdmin, <userFrom>, <userTo>) agoAdmin.addUser2ToAllUser1Groups(agoAdmin, <userFrom>, <userTo>)
import sys sys.path.append(r"..\..") from agoTools.admin import Admin if sys.argv[1]=='css': agoAdmin = Admin("user_name_here",password="******") groups=['group_ID_1', 'group_ID_2', 'group_ID_3', 'group_ID_4'] if sys.argv[1]=='sb': agoAdmin = Admin("user_name_here",password="******") groups = ['group_ID_1', 'group_ID_2'] # Enter <groupIDs> of groups to which you want to add new users # User parameters: orgUsers= agoAdmin.getUsers() #group=groups[0] for group in groups: groupUsers= agoAdmin.getUsersInGroup(group) groupUsers= groupUsers["users"] addUsers=[] print len(addUsers) for user in orgUsers: if not user["username"] in groupUsers: print user["username"] addUsers.append(user["username"]) agoAdmin.addUsersToGroups(addUsers, [group])
parser.add_argument("-labelfield", "--labelfield") parser.add_argument("-jsonfile", "--jsonfile") parser.add_argument("-portal", "--portal") parser.add_argument("-fc", "--fc") args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") args.portal = str(args.portal).replace("http://", "https://") agoAdmin = Admin(args.user, args.portal, args.password) if args.itemid == None: args.itemid = _raw_input("WebMap Id: ") if args.layerID != None: args.layerURL = agoAdmin.getLayerURL(args.layerID) if args.labelfield == None: args.labelfield = _raw_input("label field: ") if args.layerURL != None: pBookmarks = agoAdmin.createBookmarksFromLayer(args.layerURL, args.labelfield) elif args.fc != None: pBookmarks = agoAdmin.readBookmarksFromFeatureClass(args.fc, args.labelfield) elif args.jsonfile != None:
# Requires admin role. import csv, time from agoTools.admin import Admin agoAdmin = Admin('<username>') # Replace <username> with your admin username. outputFile = 'c:/temp/users.csv' users = agoAdmin.getUsers() roles = agoAdmin.getRoles() #Make a dictionary of the roles so we can convert custom roles from their ID to their associated name. roleLookup = {} for role in roles: roleLookup[role["id"]] = role["name"] with open(outputFile, 'wb') as output: dataWriter = csv.writer(output, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) # Write header row. dataWriter.writerow(['Full Name', 'Email', 'Username', 'Role', 'Date Created']) # Write user data. for user in users: #get role name from the id. If it's not in the roles, it's one of the standard roles so just use it. roleID = user['role'] roleName = roleLookup.get(roleID,roleID) dataWriter.writerow([user['fullName'].encode('utf-8'), user['email'].encode('utf-8'), user['username'].encode('utf-8'),
if not line: raise EOFError if line[-1] == '\n': line = line[:-1] return line parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-p', '--password') parser.add_argument('-portal', '--portal') parser.add_argument('-group', '--group') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") if args.group == None: args.group = _raw_input("Group ID: ") args.portal = str(args.portal).replace("http://","https://") agoAdmin = Admin(args.user,args.portal,args.password) agoAdmin.clearGroup(args.group)
if args.file == None: args.file = _raw_input("CSV path: ") if args.user == None: args.user = _raw_input("Username:"******"Portal: ") args.portal = str(args.portal).replace("http://", "https://") bIncludeSize = False if (args.bIncludeSize == "True"): bIncludeSize = True agoAdmin = Admin(args.user, args.portal, args.password) catalog = agoAdmin.AGOLCatalog(args.query, bIncludeSize) with open(args.file, 'wb') as output: # Write header row. output.write( "id,owner,created,modified,name, itle,type,typeKeywords,description,tags,snippet,thumbnail,extent,spatialReference,accessInformation,licenseInfo,culture,url,access,size,listed,numComments,numRatings,avgRatings,numViews,itemURL\n" ) # Write item data. for r in catalog: s = '' s += getResultValue(r.id) + "," s += getResultValue(r.owner) + "," s += getResultValue(r.created) + "," s += getResultValue(r.modified) + ","
##Unicode is not encoding properly so convert all arcpy params adminAccount = str(adminAccount) adminPassword = str(adminPassword) className = str(className) classSnippet = str(classSnippet) userPrefix = str(userPrefix) userPassword = str(userPassword) userEmail = str(userEmail) userFirstName = str(userFirstName) userLastName = str(userLastName) userRole = str(userRole) provider = str(provider) arcpy.AddMessage("Logging in...") try: agoAdmin = Admin(adminAccount,password=adminPassword) except: arcpy.AddError("Login failed. Please re-enter your admin username and password.") sys.exit() ##Get roles from the portal so we can translate the user-entered name to the role id that the api needs. ##Also confirm that the user-entered role is valid. allRoles = agoAdmin.getRoles() ##getRoles doesn't return predefined system roles, so we'll add those roles = {'Administrator':'org_admin', 'Publisher':'org_publisher', 'Author':'org_author', 'User':'******'} for role in allRoles: roles[role["name"]] = role["id"] if not userRole in roles.keys(): arcpy.AddError(userRole + " is not a valid role.") sys.exit()
parser.add_argument('-folder', '--folder') args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") args.portal = str(args.portal).replace("http://","https://") if args.folder == None: args.folder = _raw_input("Folder (optional): ") agoAdmin = Admin(args.user,args.portal,args.password) if args.url == None: args.url= _raw_input("Query URL: ") if args.file == None: args.file = _raw_input("Output CSV: ") folderid = None if args.folder!= None and args.folder!='': fid = agoAdmin.getFolderID(args.folder) args.folder=fid folderid = '/' + args.folder catalog = agoAdmin.findItemsWithURLs(args.url,folderid)
return line parser = argparse.ArgumentParser() parser.add_argument("-u", "--user") parser.add_argument("-p", "--password") parser.add_argument("-portal", "--portal") parser.add_argument("-folder", "--folder") args = parser.parse_args() if args.user == None: args.user = _raw_input("Username:"******"Portal: ") if args.folder == None: args.folder = _raw_input("Folder (optional): ") args.portal = str(args.portal).replace("http://", "https://") agoAdmin = Admin(args.user, args.portal, args.password) if args.folder != None: fid = agoAdmin.getFolderID(args.folder) args.folder = fid folderid = "/" + args.folder agoAdmin.updateServiceItemsThumbnail(folderid)