DouglasElliman & other scripts

This commit is contained in:
Norm Rasmussen
2022-11-08 14:47:53 -05:00
parent fce96a5ea6
commit 22704920d8
14 changed files with 2286 additions and 35 deletions

View File

@ -26,5 +26,14 @@ Workflows Demo
* Service Hub is a HUBSPOT product
* She got stuck on a workflow
* CIP Exam, it should trigger for all learners not just a specific one
* But she is getting a trigger for "enter UID" which she doesn't want to do.
* But she is getting a trigger for "enter UID" which she doesn't want to do
* This should be for everyone.
## 11/08/2022
### Monthly Sync with Georgina
* Setup an incredible workflow in Hubspot
* NP activation link
* Dropped into Hubspot > goes in contact field
* Wants to explore gamification and badging
* Self gratification
* Wants to mimic duolingo

View File

@ -96,7 +96,7 @@ They feel like this has been talked about for a longtime. Just waiting for a GO
* But Winter reports are coming soon around the G2 Reporting Course
* Make sure the script is run to remove people from G2 group!
## 10/24/2022
## 10/24/2022o
### Weekly Check in
* Katlin's numbers/metrics presentation was really good
* Everyone super impressed with numbers
@ -140,3 +140,16 @@ They feel like this has been talked about for a longtime. Just waiting for a GO
* Erin saw a certificate webinar - "How to build out a certificate program?"
* Mentioned having an interactive quizzes that are more than just True/False.
* Should we add a quiz at the activity with the most or least amount of engagement?
## 11/07/2022
### Erin is now the main POC for the Academy
* New email going out this week for the academy
* Wants to keep an eye on the numbers
* Northpass analytics workflow:
* She tries to check daily - quick glimpse
* School Activity
* Course Progress
* Course Popularity
* Goal for today: finish all the quizzes for the Profile Performance and Lead Management.
* Something that's difficult: Each section has limited information so you can only create so many questions per section, goal of 3 questions per section.
* She likes how easy it is to change the questions.

View File

@ -20,5 +20,5 @@
* How are they going to change their business model?
* 2k per head, minimum 10 people clients
* Break that 2k into small chunks and charge x * 10 or x*20 depending on the number of people
* Break that 2k into small chunks and charge x * 10 or *20 depending on the number of people

View File

@ -126,3 +126,38 @@ Okta SSO - Ted, Security Team
* Tedd is sending the correct information at the first email, but upon the second email, he is sending this SAML stuff, and the wrong email is being sent.
* Kaitlyn to write up what Tedd needs to do to get the correct email.
## 11/07/2022
### Weekly Monday Sync
* Lizzy's items:
* First and foremost - SSO - will Lizzy/Kaitlyn's plan work? It should!
* Anyone who is deactivated according to Northpass will not be able to login unless they are reactivated
* Kaitlyn suggests we just delete everyone
* This way we can start totally fresh with these users
* Users without an SSO UID have never been activated or entered Northpass
* Active, current users will not be affected at all.
* Lizzy is referencing a few "one offs" whose training material is now in a different account? ie. Carmen Macias
* Criteria for deletion: Deactivated with no SSO UID
* For new people, do we have to wait for their activation to add them to a group?
* You could add them on Friday and add them to their group upon invitation.
* There is a high "no show" rate, so they need to be added that Monday of the first class.
* If these no-shows are removed from Okta, they will be removed from Northpass and/or inable to access Northpass.
* Pre-adding them to the group just takes away an extra step on Monday, because when they activate on Monday, they will just slot into their pre-created group.
### Chapin & Shala from Pal Onboading
* Pal Onboaring might be a black box/grey area of who owns it
* Chapin works in Pal Engagement
* Shala, VP of Marketplace and Ops (Chapin reports to Shala)
* Fill rates, engagement, etc is all under their purview.
* Pals have a webapp for onboarding training and then a mobile app
* Most Pal notifications are via email.
* Lizzy had given an update/presentation about Northpass at their ops meeting
* This is for the Visit Success team
* They fulfill Pals Visits
* This generated some interest from various teams, such as the above.
### Mini/Becca Care Center items
* Stef Owens, sowens@papa.com, Group: New Hire 10/31, Course 6.1 & 6.2
* What she is not seeing - some course updates
* She is going in through Okta, entering Northpass, and clicking "Learner Mode"
* Some new course versions and various items are not updating to her end.
* Publishing continues to be confusing for Becca

View File

@ -78,11 +78,12 @@ Kayla personal email: klambie@sympatico.ca
* Check whether a certificate is expired and then have them retake the course
* These are bonuses to their existing experience
* [ ] Separate Page with Completed Courses
* [ ] Retake Course button leads to certificate pdf
* [ ] Retake Course > View Certificate
* [ ] Most/all Courses are 1 year expirations - all will be same length
* [ ] Learner completes course with milestone, after 1 year, recert course becomes availble
* [X] Separate Page with Completed Courses
* [X] Retake Course button leads to certificate pdf
* [X] Retake Course > View Certificate
* [X] Most/all Courses are 1 year expirations - all will be same length
* [X] Learner completes course with milestone, after 1 year, recert course becomes availble
* Last thing: VP of clinical brought up - how easy is it to make content accessible to a group for a sub group?

View File

@ -65,4 +65,24 @@
## 10/26/2022
### Weekly Content Sync
* Krystal needs to pull down some content and resources due to recent legistlation.
*
## 11/07/2022
### Free Form Courses & Changing the End of Course Screen
* Free Form Courses:
* Good news! The drivers are referring back to the resources (which is what we wanted)
* Bad News! They have to start from the beginning to find their resources.
* Will free form courses mess up the end of course screen?
* Once they are on the last activity, if there is no EOC screen, where should they go?
* Charlie: should the screen "hey, you have new resources available!" exist?
* Charlie: They could end up on the course overview page once they complete the resource, so they can review some courses.
* Charlie: Scenario: activity 2 out of 3, they hit next, see activity 3, hit continue, they go to the cover page and see that activity 2 and 3 are complete, but 1 aren't.
* The text ones with many activities need to be figured out.
* Krystal meets with them twice a week, so this needs to happen ASAP.
* Charlie promised to mock up two experience before the end of the week so that Krystal can share with the team.
* Two functionalities:
* 1.Continue buttons _always_ goes back to the course overview page so drivers can select a new activity
* 2.End of Course screen is skipped and people go back to the cover page at the end - OR - go back to resources home.
* Other feedback?
* Yes, video reosurces are not playing nicely with iOS.
* After the video is over, it takes over the entire screen and is hard to exit.

View File

@ -137,7 +137,7 @@ Other Hot topics in the Netherlands:
* Needs info on events
* Upcoming on the global level
## 9/22/2022
## 09/22/2022
* Banner Width smaller
* Mobile view search bar becomes too short - Phone view
* Chevron Carousel is okay for many courses
@ -174,7 +174,26 @@ These are new notes to test an update function
* Item 4
* Item Item
|----
## 11/07/2022
### Meeting Heading: Topics for discussion
* This is an item
* This is another item
* Here are some things that need to be done:
* Item 1
* Item 2
* Item 3
* Discussion points
* More discussion points
### New Heading
This is more text
This is yet again more text but longer
* To do item
* To Three item
## Tasks
- [X] Need to Hide some courses for an offline assesment
@ -219,3 +238,5 @@ Figma file questions
They need more training and enablement They will follow up for Figma files and setting those up for design
,[Name](2022-10-17_name.md)
notes = notes.read()

View File

@ -1,10 +1,11 @@
import io
from datetime import date
import markdown
from re import search
import re
# import pypandoc and/or panflute
rootdir = "/Users/normrasmussen/Documents/Northpass/CustomerNotes/"
rootdir = "/Users/normrasmussen/Documents/Northpass/Scripts/API_Notes/SampleNotes/"
#meetingstart = "##"
#meetingend = "##"
#rx = r'{}.*?{}'.format(re.escape(meetingstart), re.escape(meetingend))
@ -18,29 +19,26 @@ def findheadings():
headingsarray.append(headings)
print(headingsarray)
def pullnotes():
date1 = "!*!"
#"[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}"
date2 = "!@#"
#"[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}"
#range = r'{}.*?{}'.format(re.escape(date1), re.escape(date2))
with open(rootdir + "G2/G2.md", "r") as myfile:
file = myfile.read()
print(file[file.find(date1)+len(date1):file.rfind(date2)])
#print(chunk)
def pullnotes2():
inRecordingMode = False
file = "rootdir + Talkspace/Talkspace.md"
for line in file:
if not inRecordingMode:
if line.startswith(r'\d+/\d+/\d'):
inRecordingMode = True
elif line.startswith(r'\d+/\d+/\d'):
inRecordingMode = False
else:
yield line
# From StackOverflow:
def noteSections(rootdir):
today = date.today()
today = today.strftime("%m/%d/%Y")
dateregex = "^[0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4}$"
with open(rootdir+"Flink.md", "r") as f:
notes_flag = False
notes = ''
for line in f:
if line.startswith(f"## {today}"):
notes_flag = True
elif notes_flag:
notes += line
if not line.strip(): break
mdConvert(rootdir, notes)
def mdConvert(rootdir, notes):
conversion = markdown.markdown(notes)
print(notes)
if __name__ == "__main__":
pullnotes()
noteSections(rootdir)

View File

@ -0,0 +1,100 @@
import requests
apiKey = "Bknf8kidbluRfcKu3m3lKoxS8"
groups = [
"Armonk",
"Babylon",
"Bayside",
"Bedford",
"Cutchogue",
"East Hampton",
"East Setauket",
"Executive",
"Farmingville",
"Franklin Square",
"Garden City",
"Great Neck",
"Greenport",
"Hampton Bays",
"Hamptons",
"Huntington",
"Huntington Station",
"Katonah",
"Locust Valley",
"Long Beach",
"Long Island",
"Long Island City",
"Manhasset",
"Manhattan",
"Massapequa Park",
"Mattituck",
"Merrick",
"Montauk",
"New Hyde Park",
"New York",
"North Fork",
"Ocean Beach",
"Plainview",
"Port Washington",
"Queens",
"Quogue",
"Rockville Centre",
"Roslyn",
"Sag Harbor",
"Sayville",
"Scarsdale",
"Sea Cliff",
"Smithtown",
"Southampton",
"Syosset",
"Westchester",
"Westhampton Beach"
]
def findgroupIDs(apiKey, groups):
groupuuids = []
badGroups = []
for group in groups:
url = "https://api.northpass.com/v2/groups?filter[name][eq]="
headers = {
"accept": "application/json",
"X-Api-Key": apiKey
}
response = requests.get(url + group, headers=headers)
response = response.json()
try:
response = response["data"][0]["id"]
groupuuids.append(response)
except:
badGroups.append(group)
finally:
pass
#print(badGroups)
#print(groupuuids)
assignCourse(apiKey,url, groupuuids)
def assignCourse(apiKey, url, groupuuids):
for group in groupuuids:
try:
url = f"https://api.northpass.com/v2/groups/{group}/relationships/courses"
courseuuid = "10e9b174-cbad-4caa-b0ff-1a7338f2345a"
headers = {
"accept": "application/json",
"content-type": "application/json",
"X-Api-Key": apiKey
}
payload = {"data": [
{
"type": "courses",
"id": courseuuid
}
]}
print(f"Group {group} successfully accepted the course")
response = requests.post(url, json=payload, headers=headers)
except:
print(f"Group {group} does not have that course, yet")
finally:
pass
if __name__ == "__main__":
findgroupIDs(apiKey, groups)

View File

@ -0,0 +1,39 @@
import requests
baseUrlname = "https://api.northpass.com/v2/people?filter[name][eq]="
baseUrlemail = "https://api.northpass.com/v2/people?filter[email][eq]="
apiKey = "JRDpCGQ7vSRiva6t5OkWDr5eJ" #This is for G2
def getfromName(baseUrlname, apiKey):
name = "Adam Nelson"
url = baseUrlname + f"{name}"
headers = {
"accept": "*/*",
"x-api-key": apiKey,
"content-type": "application/json",
}
response = requests.get(url, headers=headers)
response = response.json()
print(response)
uuid = response["data"][0]["id"]
print("Learner ID:" )
print(uuid)
def getfromEmail(baseUrlemail, apiKey):
email = "norm+g2test@northpass.com"
#email = "aaron.rodgers@corpay.com"
url = baseUrlemail + f"{email}"
headers = {
"accept": "*/*",
"x-api-key": apiKey,
"content-type": "application/json",
}
response = requests.get(url, headers=headers)
response = response.json()
print(response)
uuid = response["data"][0]["id"]
print("Learner ID:" )
if __name__ == "__main__":
getfromEmail(baseUrlemail, apiKey)
#getfromName(baseUrl, apiKey)

View File

@ -0,0 +1,51 @@
import requests
import os
from datetime import date
import pandas as pd
basecsv = "/Users/normrasmussen/Documents/Northpass/Scripts/G2_Unenroll/g2mca.csv"
def mainFunc(basecsv):
readData = pd.read_csv(
basecsv,
index_col=False,
)
try:
readData.loc[
readData['Course Name'].isin(['G2 Profile Anatomy'])]
try:
readData.loc[
readData['Course Name'].isin('Profile Performance & Lead Management')]
except:
print("Profile Course Failed")
try:
readData.loc[
readData['Course Name'].isin('Review Tracking & Brand Building')]
except:
print("Review Course Failed")
try:
readData.loc[
readData['Course Name'].isin('The Review Rundown')]
extractedList = readData.loc[
readData['Attempt Start'].isnull(),
'Learner Name'].tolist()
print(extractedList)
except:
print("Review Rundown failed")
# newList = [*set(extractedList)]
#findUuids(newList, readData)
except:
print("Not Working")
#def findUuids(newList, readData):
# try:
# for name in newList:
# uuidList = readData.loc[
# readData['Learner Name'] == name),
# 'uuid'.tolist()]
# print(uuidList)
# except:
# print("An error occured")
if __name__ == "__main__":
mainFunc(basecsv)

File diff suppressed because it is too large Load Diff

View File

@ -10,3 +10,10 @@
* [ ] (Talkspace) [10/27/2022] Pull report of all users in NPP with activated/deactived status
* [ ] (Wildhealth) [10/31/2022] Pass PTO information onto Brian so he knows about the support tickets from Baeleigh & WildHealth.
* [ ] (Wildhealth) [10/31/2022] Update Branding on WPG - Abby to send new logo and Norm to figure out colors/branding for styling.
* [ ] (Aiim) [11/08/2022] Send DV Accredible Interface with Badging and Certs. Aiim uses accredible.
* [ ] (Aiim) [11/08/2022] Create a QBR report for next month's meeting. Analytics, product info. Review usage, etc.
* [ ] (Amyris) [11/08/2022] Setup Quarterly Looker Pull of MCA to be sent to Nicole. Year to Date, MCA. Next one in January.
* [ ] (SwiftMedical) [11/08/2022] Create Tabs & categories on catalog page - deciding on design.
* [ ] (Talkspace) [11/08/2022] If a course a is at 100% and is a 1099 course, remove from dashboard
* [ ] (Talkspace) [11/08/2022] Remove Footer Completely no Dash no LPs
* [ ] (Talkspace) [11/08/2022] Add Training@talkspace.com to footer