Started the migration tool scripts. Finished Karbon's script for mass delete and re-addition. Other small things.
This commit is contained in:
104
Scripts/Karbon/bulk_delete.py
Normal file
104
Scripts/Karbon/bulk_delete.py
Normal file
@ -0,0 +1,104 @@
|
||||
import requests
|
||||
import Apikeys
|
||||
import csv
|
||||
|
||||
BASEURL = "https://api.northpass.com/v2/"
|
||||
APIKEY = Apikeys.KARBON
|
||||
HEADERS = {
|
||||
"accept": "application/json",
|
||||
"content-type": "application/json",
|
||||
"X-Api-Key": APIKEY,
|
||||
}
|
||||
ADMIN_LIST = [
|
||||
"thea.schlobohm@karbonhq.com",
|
||||
"charles+karbon@northpass.com",
|
||||
"elizabeth.blass@karbonhq.com",
|
||||
"ian.clazie@karbonhq.com",
|
||||
"kelly.gabriel@karbonhq.com",
|
||||
"richard.newman@karbonhq.com",
|
||||
"steven.luu@karbonhq.com",
|
||||
]
|
||||
|
||||
|
||||
def get_people_first():
|
||||
count = 0
|
||||
delete_list = []
|
||||
while True:
|
||||
count += 1
|
||||
person_url = f"{BASEURL}people?page={count}"
|
||||
# &filter[partnerships_type][not_eq]=Partnerships::Admin&include=partnerships&page={count}"
|
||||
# person_url = f"{BASEURL}people?filter[email][not_cont]=karbonhq.com"
|
||||
person_resp = requests.get(person_url, headers=HEADERS)
|
||||
persjson = person_resp.json()
|
||||
nextlink = persjson["links"]
|
||||
|
||||
for people in persjson["data"]:
|
||||
# print(f"This is just everyone... {people['id']}")
|
||||
if people["attributes"]["email"] in ADMIN_LIST:
|
||||
pass
|
||||
else:
|
||||
learneruuid = people["id"]
|
||||
print(people["attributes"]["email"])
|
||||
delete_list.append(learneruuid)
|
||||
|
||||
if "next" not in nextlink:
|
||||
break
|
||||
|
||||
del_load = {"payload": delete_list}
|
||||
print(f"Deleting {len(delete_list)} people")
|
||||
delete_everyone(delete_list)
|
||||
|
||||
|
||||
def get_groups():
|
||||
group_list = []
|
||||
while True:
|
||||
groups_url = f"{BASEURL}groups"
|
||||
groups_resp = requests.get(groups_url, headers=HEADERS)
|
||||
groupjson = groups_resp.json()
|
||||
if len(groupjson['data']) == 0:
|
||||
break
|
||||
else:
|
||||
for groups in groupjson["data"]:
|
||||
guids = groups["id"]
|
||||
print(f"Deleting Group {groups['attributes']['name']}")
|
||||
group_list.append(guids)
|
||||
delete_groups(guids)
|
||||
|
||||
print(f"I've just processed {len(group_list)} groups and deleted them.")
|
||||
|
||||
|
||||
def delete_everyone(uuids):
|
||||
if len(uuids) > 1500:
|
||||
for chunk in range(0, len(uuids), 1500):
|
||||
i = chunk
|
||||
payload_1 = []
|
||||
i_to_add = uuids[i : i + 1500]
|
||||
for person in i_to_add:
|
||||
payload_1.append(person)
|
||||
print(f"This group of people has a count of {len(payload_1)}")
|
||||
payload = {"payload": payload_1}
|
||||
del_url = f"{BASEURL}bulk/people/delete"
|
||||
response = requests.post(del_url, headers=HEADERS, json=payload)
|
||||
print(response.status_code)
|
||||
print(response.text)
|
||||
|
||||
|
||||
def delete_groups(guids):
|
||||
gdel_url = f"{BASEURL}groups/{guids}"
|
||||
gresponse = requests.delete(gdel_url, headers=HEADERS)
|
||||
print(f"Deleted group {guids} with status code {gresponse.status_code}")
|
||||
codes = [500, 403, 404]
|
||||
if gresponse.status_code in codes:
|
||||
print(
|
||||
f"Hm. Something went wrong. Status code: {response.status_code} and text:"
|
||||
)
|
||||
print(response.text)
|
||||
else:
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Getting Group IDs and Deleting groups.")
|
||||
get_groups()
|
||||
# print("Groups have been deleted. Moving onto people.")
|
||||
# get_people_first()
|
||||
Reference in New Issue
Block a user