Skip to content

Commit 85f0a5b

Browse files
authored
Merge pull request Esri#401 from Esri/chun7642/cleanup_pythonapi_script
script to clear pythonapi playground
2 parents 2e2bc26 + 6caee9f commit 85f0a5b

3 files changed

Lines changed: 98 additions & 2 deletions

File tree

misc/_common.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
from arcgis.gis import GIS
2+
import datetime
3+
4+
"""accounts to keep from user/groups/items deletion"""
5+
ignore_accounts = ['andrew', 'andrew.chapkowski', 'dvitale', 'david.vitale',
6+
'atma.mani', 'john.yaist', 'bill.major', 'YJiang',
7+
'rohit.singh', 'rohitgeo', 'gbochenek_python',
8+
'system_publisher', 'admin', 'portaladmin',
9+
'Demo_User', 'First_User', 'Second_User',
10+
'api_data_owner', 'arcgis_python', 'temp_execution']
11+
12+
"""accounts that you want to delete groups and items, but keep user"""
13+
target_accounts = ['arcgis_python']
14+
15+
"""create GIS connection via admin credentials"""
16+
# gis = GIS(profile='your_entp_admin_profile', verify_cert=False)
17+
gis = GIS("https://pythonapi.playground.esri.com/portal","temp_execution", "temp_execution123")
18+
19+
20+
def delete_depending_items(dependent_item):
21+
"""deletes the item's depending items, and then the item"""
22+
depending_items = dependent_item.dependent_to()
23+
if depending_items['list']:
24+
for item in depending_items['list']:
25+
delete_depending_items(item)
26+
if dependent_item.protected:
27+
dependent_item.protect(False)
28+
try:
29+
print("=== deleting the item: %s" % dependent_item.homepage)
30+
dependent_item.delete()
31+
except:
32+
print("=== could not delete non-dependent item %s" % dependent_item.homepage)
33+
34+
35+
def delete_items(user):
36+
"""deletes the user items"""
37+
folders = [None] + user.folders
38+
for folder in folders:
39+
print("=== deleting inside folder: %s" % folder)
40+
for item in user.items(folder=folder, max_items=255):
41+
delete_depending_items(item)
42+
print("=== finished deleting items owned by " + user.username)
43+
44+
45+
def delete_groups(user):
46+
"""deletes the user groups, and removes user from groups where user is a member of"""
47+
groups_for_deletion = gis.groups.get('query=owner:' + user.username)
48+
if groups_for_deletion is not None:
49+
for group in groups_for_deletion:
50+
try:
51+
print("=== deleting group %s" % group.groupid)
52+
group.delete()
53+
except:
54+
print("=== could not delete group %s" % group.groupid)
55+
56+
for grp in user.groups:
57+
print("=== removing from group: %s" % grp.id)
58+
if grp.owner != user.username:
59+
try:
60+
grp.remove_users([user.username])
61+
except:
62+
print("=== User cannot be removed from group: %s" % grp.id)
63+
print("=== finished deleting groups owned by " + user.username)
64+
65+
66+
def delete_for_users():
67+
"""deletes items and groups for users in target_accounts, and ignore others"""
68+
for user in gis.users.search():
69+
if user.username not in ignore_accounts and not user.username.startswith("esri_"):
70+
print("-*-*-*-*-*-*-Delete groups & items & user for %s -*-*-*-*-*-" % user.username)
71+
delete_items(user)
72+
delete_groups(user)
73+
try:
74+
user.delete()
75+
except:
76+
print("could not delete user %s" % user.username)
77+
78+
elif user.username in target_accounts:
79+
print("-*-*-*-*-*-*-Delete groups & items for %s -*-*-*-*-*-*-*-*-" % user.username)
80+
delete_items(user)
81+
delete_groups(user)
82+
83+
else:
84+
print("-*-*-*-*-*-*-*-*-No Delete for %s -*-*-*-*-*-*-*-*-*-*-" % user.username)

misc/setup.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
1-
print("Hello setup!")
1+
from misc._common import *
2+
3+
print("-*-*-*-*-*-*-*-*-*-*-*Setup begins*-*-*-*-*-*-*-*-*-*-*-*-*-")
4+
5+
delete_for_users()
6+
7+
print("-*-*-*-*-*-*-*-*-*-*-*Setup ends*-*-*-*-*-*-*-*-*-*-*-*-*-*-")

misc/teardown.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
1-
print("hello teardown!")
1+
from misc._common import *
2+
3+
print("-*-*-*-*-*-*-*-*-*-*-*Teardown begins*-*-*-*-*-*-*-*-*-*-*-*-")
4+
5+
delete_for_users()
6+
7+
print("-*-*-*-*-*-*-*-*-*-*-*Teardown ends*-*-*-*-*-*-*-*-*-*-*-*-*-")

0 commit comments

Comments
 (0)