Files
Gainsight/Scripts/Anthology/anthology-update-learner-props.py

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+
"""