Пример #1
0
#### 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
Пример #2
0
            '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)
Пример #4
0
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)

Пример #5
0
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(
Пример #6
0
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)
Пример #7
0
##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': '******'
}
Пример #8
0
#### 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
Пример #9
0
    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("@")
Пример #10
0
# 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'))
Пример #12
0
    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)
Пример #13
0
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)
Пример #14
0
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)


Пример #15
0
#### 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
Пример #16
0
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)
Пример #17
0
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)
Пример #18
0
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
Пример #19
0
# 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))])
Пример #20
0
    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)
Пример #21
0
    ##  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:
Пример #22
0
# 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,
Пример #23
0
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)
Пример #24
0
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)
Пример #25
0
### 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))
Пример #26
0
# 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!'
Пример #27
0
# 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))])
Пример #28
0
#### 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>)
Пример #29
0
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])
Пример #30
0
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:
Пример #31
0
# 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'),
Пример #32
0
    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)


Пример #33
0
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()
Пример #35
0
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)