111 lines
3.8 KiB
Python
111 lines
3.8 KiB
Python
import pprint
|
|
import csv
|
|
import requests
|
|
import Apikeys
|
|
|
|
BASEURL = "https://api.northpass.com/v2"
|
|
APIKEY = Apikeys.ANTHOLOGY
|
|
HEADERS = {"accept": "*/*","X-Api-Key": APIKEY,"content-type": "application/json"}
|
|
pp=pprint.PrettyPrinter(indent=4)
|
|
|
|
def main():
|
|
count = 0
|
|
new_full_list = []
|
|
while True:
|
|
count += 1
|
|
getpplprops = f"{BASEURL}/properties/people?limit=100&page={count}"
|
|
# getppl = f"{BASEURL}/people?limit=100&page={count}"
|
|
getpplreq = requests.get(getpplprops, headers=HEADERS).json()
|
|
nextlink = getpplreq["links"]
|
|
for name in getpplreq['data']:
|
|
uuid = name['id']
|
|
subscription_levels = name['attributes']['properties']['subscription_levels']
|
|
if subscription_levels is not None:# or "Core" not in subscription_levels:
|
|
if "Core" not in subscription_levels:
|
|
try:
|
|
subs = subscription_levels.split(", ")
|
|
except AttributeError as e:
|
|
print(e)
|
|
subs = subscription_levels
|
|
# print(name["attributes"]["properties"]["email"])
|
|
new_subscriptions = change_property_values(uuid, subs)
|
|
paired_with_uuid = (uuid, new_subscriptions)
|
|
new_full_list.append(paired_with_uuid)
|
|
print(count)
|
|
|
|
if "next" not in nextlink or count == 5:
|
|
break
|
|
|
|
return new_full_list
|
|
|
|
def change_property_values(uuid, subs):
|
|
strip_list = []
|
|
subs = list(filter(lambda x: x != '', subs))
|
|
subs = list(filter(lambda x: x != ' ', subs))
|
|
# print("\n")
|
|
# print(subs)
|
|
# print(len(subs))
|
|
for item in subs:
|
|
stripped = item.strip()
|
|
x = ""
|
|
if "Enhanced+" in stripped:
|
|
x = stripped.replace('Enhanced+', 'Premium')
|
|
strip_list.append(x)
|
|
else:
|
|
if "Enhanced" in stripped:
|
|
x = stripped.replace("Enhanced", "Core")
|
|
elif "Essential" in stripped:
|
|
x = stripped.replace("Essential", "Core")
|
|
strip_list.append(x)
|
|
strip_list = list(filter(lambda x: x != '', strip_list))
|
|
strip_list = set(strip_list)
|
|
# print(strip_list)
|
|
# print(len(strip_list))
|
|
return strip_list
|
|
|
|
def chunk_and_push(new_full_list):
|
|
fill_props_url = f"{BASEURL}/properties/people/bulk"
|
|
if len(new_full_list) > 10:
|
|
for chunk in range(0, len(new_full_list), 10):
|
|
i = chunk
|
|
mediumload = []
|
|
to_push = new_full_list[i:i+10]
|
|
for individuals in to_push:
|
|
subscripts = individuals[1]
|
|
subscripts = str(subscripts).replace('{', '').replace('}','').replace("'",'')
|
|
print(subscripts)
|
|
miniload = {
|
|
"attributes": { "properties": { "subscription_level": subscripts } },
|
|
"id": individuals[0],
|
|
"type": "person_properties"
|
|
},
|
|
mediumload.append(miniload)
|
|
payload = { "data": mediumload }
|
|
print(payload)
|
|
|
|
def backup_current_props(new_full_list):
|
|
for pers_props in new_full_list:
|
|
with open('/Users/normrasmussen/Downloads/new_props_backup.csv', 'a') as file:
|
|
backup = csv.writer(file, delimiter=',')
|
|
backup.writerow(pers_props)
|
|
|
|
if __name__ == "__main__":
|
|
new_full_list = main()
|
|
# backup_current_props(new_full_list)
|
|
chunk_and_push(new_full_list)
|
|
# str1 = "Anthology Encompass: Essential"
|
|
# str2 = str1.replace("Essential", "Core")
|
|
# print(str1)
|
|
# print(str2)
|
|
"""
|
|
Anthology 101: Essential Anthology Encompass: Essential
|
|
Anthology Insight: Essential
|
|
Blackboard Learn: Essential
|
|
Anthology Planning: Essential
|
|
Power BI: Essential
|
|
Anthology Student: Essential
|
|
Anthology Student: Enhanced
|
|
Anthology Student: Enhanced+
|
|
Anthology National University: Enhanced+
|
|
"""
|