Files
NP_CSM_Tool/app/2
2023-02-22 17:11:14 -05:00

190 lines
5.6 KiB
Plaintext

from app import app
from flask import request, Flask, flash, render_template, session, make_response
import requests
import json
import pandas as pd
import re
@app.route("/", methods=["GET", "POST"])
def ask_key():
session.clear()
if request.method == "POST":
session["key"] = request.form.get("apikey")
if re.search("\s", session["key"]):
error = "Hm. That doesn't seem right"
return render_template("index.html", title="Home", error=error)
elif session["key"] is not None and len(session["key"]) > 10:
return render_template("options.html", title="Options")
else:
error = "Hm. That doesn't seem right"
return render_template("index.html", title="Home", error=error)
else:
return render_template("index.html", title="Home")
@app.route("/", methods=["GET", "POST"])
def render_home():
return render_template("index.html", title="Home")
@app.route("/get_courses", methods=["GET", "POST"])
def get_courses():
array = []
df = pd.DataFrame()
tempdf = pd.DataFrame()
pd.set_option("display.max_colwidth", 100)
x = 0
if request.method == "POST":
while True:
x += 1
url = f"https://api.northpass.com/v2/courses?page={x}"
headers = {"accept": "application/json", "X-Api-Key": session["key"]}
response = requests.get(url, headers=headers)
jsonresponse = response.json()
dt = jsonresponse["data"]
next = jsonresponse["links"]
for course in dt:
df = df.append(course["attributes"], ignore_index=True)
# df = df.drop("list_image_url", axis=1)
if "next" not in next:
break
dfhtml = df.to_html(col_space=5)
session["dfcsv"] = df.to_csv()
return render_template("table.html", tables=dfhtml, titles="Course List")
else:
return "This isn't working. Let's go our own way."
@app.route("/table")
def table():
return render_template("table.html", tables=[session["dfhtml"]], titles=["Table"])
@app.route("/downloadcsv", methods=["GET", "POST"])
def download_csv():
if request.method == "GET":
download = make_response(session["dfcsv"])
download.headers["Content-Disposition"] = "attachment; filename=export.csv"
download.headers["Content-Type"] = "text/csv"
return download
@app.route("/get_people", methods=["GET", "POST"])
def get_people():
array = []
ppl_dict = {}
df = pd.DataFrame()
x = 0
if request.method == "POST":
while True:
x += 1
url = f"https://api.northpass.com/v2/people?page={x}"
headers = {"accept": "application/json", "X-Api-Key": session["key"]}
response = requests.get(url, headers=headers)
data = response.json()
for response in data["data"]:
print(response)
uuid = response["id"]
ppl_dict = {"id": uuid}
for keys, values in response["attributes"].items():
ppl_dict[keys] = values
array.append(ppl_dict)
print(array)
next = data["links"]
if "next" not in next:
break
Table = []
for key, value in array.items(): # or .items() in Python 3
temp = []
temp.extend([key,value]) #Note that this will change depending on the structure of your dictionary
Table.append(temp)
return render_template("table.html", tables=Table, titles="People List")
"""
for person in dt:
print(person)
df = df.append(person["attributes"], ignore_index=True)
dfppl = df.to_html(col_space=5)
session["dfcsv"] = df.to_csv()
else:
return "what what"
"""
@app.route("/add_options", methods=["POST"])
def add_options():
array = []
dict_response = {}
df = pd.DataFrame()
x = 0
if request.method == "POST":
while True:
x += 1
url = f"https://api.northpass.com/v2/groups?page={x}"
headers = {"accept": "application/json", "X-Api-Key": session["key"]}
response = requests.get(url, headers=headers)
data = response.json()
# data = json.loads(data)
print(data)
# print(type(response))
# print(response)
# jsonresponse = response.json()
# dt = jsonresponse["data"]
# next = jsonresponse["links"]
# for group in dt:
# df = df.from_dict(group["attributes"], orient="index")
# df = df.append(group["id"], ignore_index=True)
# df = df.append(group["attributes"], ignore_index=True)
# if "next" not in next:
# break
session["dfcsv"] = df.to_csv()
dfgroups = df.to_html(col_space=5)
return render_template(
"bulk_add.html", tables=dfgroups, titles="Bulk Add Learners"
)
@app.route("/bulk_add", methods=["GET", "POST"])
def bulk_add():
if request.method == "POST":
emails = request.form.get("emails")
groups = request.form.get("groups")
url = "https://api.northpass.com/v2/bulk/people"
payload = {
"data": {"attributes": {"people": [{"email": emails, "groups": groups}]}}
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"X-Api-Key": session["key"],
}
app.secret_key = "@&I\x1a?\xce\x94\xbb0w\x17\xbf&Y\xa2\xc2(A\xf5\xf2\x97\xba\xeb\xfa"
if __name__ == "__main__":
ask_key()