82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
import requests
|
|
from collections import Counter
|
|
import pandas as pd
|
|
|
|
basecsv = "/Users/normrasmussen/Documents/Northpass/Scripts/G2_Unenroll/g2mca_112122.csv"
|
|
apiKey = "JRDpCGQ7vSRiva6t5OkWDr5eJ" #G2
|
|
|
|
def mainFunc(basecsv, apiKey):
|
|
readData = pd.read_csv(
|
|
basecsv,
|
|
index_col=False,
|
|
)
|
|
readData.loc[readData['Course Name'].isin([
|
|
'G2 Profile Anatomy', 'Profile Performance & Lead Management',
|
|
'Review Tracking & Brand Building', 'The Review Rundown'])]
|
|
extractedList = readData.loc[readData['Attempt Start'].isnull(),'Email'].tolist()
|
|
fourOccs = Counter(extractedList)
|
|
finalNames = []
|
|
for name, occurences in fourOccs.items():
|
|
if occurences == 4:
|
|
finalNames.append(name)
|
|
findUuids(finalNames, readData, apiKey)
|
|
|
|
def findUuids(finalNames, readData, apiKey):
|
|
emailUuid = []
|
|
uuidList = []
|
|
deactivateUuid = {}
|
|
try:
|
|
for name in finalNames:
|
|
baseUrlname = "https://api.northpass.com/v2/people?filter[email][eq]="
|
|
name = name
|
|
url = baseUrlname + f"{name}"
|
|
headers = {
|
|
"accept": "*/*",
|
|
"x-api-key": apiKey,
|
|
"content-type": "application/json",
|
|
}
|
|
response = requests.get(url, headers=headers)
|
|
response = response.json()
|
|
uuid = response["data"][0]["id"]
|
|
uuidList.append(uuid)
|
|
deactivateUuid.update({name: uuid})
|
|
emailUuid.append(deactivateUuid)
|
|
except:
|
|
print("An error occured")
|
|
finally:
|
|
print(deactivateUuid)
|
|
removeFromGroup(uuidList, apiKey)
|
|
|
|
def removeFromGroup(uuidList, apiKey):
|
|
numRemoved = 0
|
|
badUuid = []
|
|
for uuid in uuidList:
|
|
uuidList = []
|
|
url = f"https://api.northpass.com/v2/people/{uuid}/relationships/groups"
|
|
headers = {
|
|
"accept": "application/json",
|
|
"content-type": "application/json",
|
|
"X-Api-Key": apiKey
|
|
}
|
|
payload = {"data": [
|
|
{
|
|
"id": "d78af2ad-a6c8-4016-90a4-fb00bcc67891",
|
|
"type": "membership-groups"
|
|
}
|
|
]}
|
|
response = requests.delete(url, json=payload, headers=headers)
|
|
status = response.status_code
|
|
if response.status_code == 200:
|
|
print(f"UserID {uuid} okay to be deleted.")
|
|
numRemoved += 1
|
|
uuidList.append(uuid)
|
|
else:
|
|
print(f"Some other error {status} for {uuid}")
|
|
badUuid.append(uuid)
|
|
print(f"Complete! {numRemoved} people removed from group.")
|
|
print("Bad UUIDS: ")
|
|
print(badUuid)
|
|
|
|
if __name__ == "__main__":
|
|
mainFunc(basecsv, apiKey)
|