From 00d628a532d0e46754b29b98ccea92a00dd162b8 Mon Sep 17 00:00:00 2001 From: Norm Rasmussen Date: Tue, 29 Apr 2025 15:47:51 -0400 Subject: [PATCH] Some completed tasks. Script for large Walmart enrollment (which brought down the app... oops). --- .../WSGC - Post-New Hire/homepage.html.liquid | 7 ++- Scripts/API_Tests/bulk_add_ppl_from_csv.py | 54 ++++++++++++++++--- .../API_Tests/get_all_people_toggle_prop.py | 27 +++++++--- Tasks.md | 6 +-- 4 files changed, 78 insertions(+), 16 deletions(-) diff --git a/Custom_Templates/customer_templates/WSGC - Post-New Hire/homepage.html.liquid b/Custom_Templates/customer_templates/WSGC - Post-New Hire/homepage.html.liquid index 730da2fb..8de48bb7 100644 --- a/Custom_Templates/customer_templates/WSGC - Post-New Hire/homepage.html.liquid +++ b/Custom_Templates/customer_templates/WSGC - Post-New Hire/homepage.html.liquid @@ -30,7 +30,12 @@ {% include "featured_courses" %}
- {% include "widget_badges" %} + {% for course in courses.enrolled %} + {% if course.id == 'ef6af62f-897e-4eb2-8f0f-47b3df3bc06b' and course.progress == 100 %} + {% include "widget_badges" %} + {% endif %} + {% endfor %} + {% include "widget_course_progress" %}
diff --git a/Scripts/API_Tests/bulk_add_ppl_from_csv.py b/Scripts/API_Tests/bulk_add_ppl_from_csv.py index baae6aea..7bd08596 100644 --- a/Scripts/API_Tests/bulk_add_ppl_from_csv.py +++ b/Scripts/API_Tests/bulk_add_ppl_from_csv.py @@ -1,18 +1,23 @@ import requests -import json +import pandas as pd import pprint -import csv import Apikeys +# ************************ +# IF YOU RUN THIS SCRIPT AGAIN WITH HUNDREDS OF THOUSANDS OF ENROLLMENTS +# SPREAD IT OUT OVER MANY BATCHES, IDEALLY ALL DAY +# ************************ + pp = pprint.PrettyPrinter(indent=4) -APIKEY = Apikeys.CHUBB +IMPORTFILE = "~/Downloads/walmart-supplier-mass-grouping.csv" +APIKEY = Apikeys.SUPPLIERPROD HEADERS = { "accept": "application/json", "X-Api-Key": APIKEY, } -BASEURL = "https://api.northpass.com/v2/" +BASEURL = "https://api2.northpass.com/v2/" -def bulk_invite_ppl(): +def bulk_invite_ppl_under_1500(): """ Bulk endpoint which invites new people and adds them to a group via this structure: { @@ -35,6 +40,43 @@ def bulk_invite_ppl(): response = requests.post(url, headers=HEADERS, json=payload) print(f"Completed. Status code is {response.status_code}") +def bulk_invite_ppl_over_1500(): + data = pd.read_csv(IMPORTFILE, encoding = "utf-8") + emails = list(data["EmailID"].unique()) + url = f"{BASEURL}bulk/people" + count = 0 + if len(emails) > 499: + for chunk in range(0, len(emails), 499): + i = chunk + payload_1 = [] + i_to_add = emails[i: i + 499] + for person in i_to_add: + miniload = {"email": person, "groups": "Active Suppliers" } + miniload1 = {"email": person, "groups": "All Users" } + miniload2 = {"email": person, "groups": "Grow With Walmart" } + payload_1.append(miniload) + payload_1.append(miniload2) + payload_1.append(miniload1) + print(f"The long length payload has {len(payload_1)} people emails") + payload = {"data": {"attributes": {"people": payload_1}}} + response = requests.post(url, headers=HEADERS, json=payload) + count += 1 + print(f"Iteration number {count} out of {int(len(emails))/1500}") + print(f"Completed. Status code is {response.status_code}") + else: + payload_1 = [] + for person in emails: + miniload = {"email": person, "groups": "Active Suppliers" } + miniload1 = {"email": person, "groups": "All Users" } + miniload2 = {"email": person, "groups": "Grow With Walmart" } + payload_1.append(miniload) + payload_1.append(miniload2) + payload_1.append(miniload1) + print(f"The payload has {len(payload_1)}") + payload = {"data": {"attributes": {"people": payload_1}}} + response = requests.post(url, headers=HEADERS, json=payload) + print(f"Completed. Status code is {response.status_code}") + print(response.text) if __name__ == "__main__": - bulk_invite_ppl() + bulk_invite_ppl_over_1500() diff --git a/Scripts/API_Tests/get_all_people_toggle_prop.py b/Scripts/API_Tests/get_all_people_toggle_prop.py index 60ebf267..ca43d838 100644 --- a/Scripts/API_Tests/get_all_people_toggle_prop.py +++ b/Scripts/API_Tests/get_all_people_toggle_prop.py @@ -13,27 +13,33 @@ HEADERS = { } def get_people(): - count = 0 + count = 1 while True: ppl_uuids = [] url = f"{BASEURL}/people?page={count}&limit=100" print(url) count += 1 response = requests.get(url, headers=HEADERS).json() + nextlink = response["links"] for data in response['data']: person_uuid = data['id'] + if person_uuid == "c09c6319-7569-46ac-94d5-3885d9de4c2f" or person_uuid == "477de2a1-15cc-4d67-9e95-7e3910dca5d3": + print("Found Claudia or Fabian") + print(person_uuid) + print(data['attributes']['full_name']) ppl_uuids.append(person_uuid) - if len(ppl_uuids) == 10: - print(len(ppl_uuids)) + if len(ppl_uuids) == 100: apply_prop(ppl_uuids) # break + if "next" not in nextlink: + break + def apply_prop(ppl_uuids): inserted_load = [] for person in ppl_uuids: - print(person) miniload = { - "attributes": { "properties": { "new_content": "true" } }, + "attributes": { "properties": { "new_content": "True" } }, "id": person, "type": "person_properties" } @@ -41,7 +47,16 @@ def apply_prop(ppl_uuids): prop_url = f"{BASEURL}/properties/people/bulk" payload = { "data": inserted_load } print(payload) - # apply_payload = requests.posts(prop_url, json=payload, headers=HEADERS) + apply_payload = requests.post(prop_url, json=payload, headers=HEADERS) + stat = apply_payload.status_code + print(stat) + if "4" in str(stat): + print("....!") + print("Error! Error!") + print(stat.text) + print(payload) + print("....!") + if __name__ == "__main__": get_people() diff --git a/Tasks.md b/Tasks.md index 4089e7bd..2180e0b1 100644 --- a/Tasks.md +++ b/Tasks.md @@ -29,14 +29,14 @@ - [ ] Follow up with Phillip re: the group deletion question - 04-23-2025 - [ ] Upload font files to S3 and make appropriate changes in templates/custom css - 04-23-2025 - [ ] Move Production templates to Sandbox - 04-23-2025 -- [ ] Add all users in CSV to "Active Supplier", "All Users", and "Grow with Walmart" groups. Set Locale-Person to USA. +- [X] Add all users in CSV to "Active Supplier", "All Users", and "Grow with Walmart" groups. Set Locale-Person to USA. ## Walmart Volt - [ ] Start compiling ticket list and notes to send to Dan Kardell. - 04-23-2025 ## Williams-Sonoma -- [ ] Revert auto-adding of badges to post-new hire dash. Badges should only show when course `97d78ff7-e82b-4f1d-b142-d5ad51fba433` is completed. - 04-15-2025 +- [ ] Revert auto-adding of badges to post-new hire dash. Badges should only show when course `ef6af62f-897e-4eb2-8f0f-47b3df3bc06b` is completed. - 04-15-2025 ## Chubb -- [ ] Book EMC time for Alisha, Jared, me, Kim, and Jenelle +- [X] Book EMC time for Alisha, Jared, me, Kim, and Jenelle