From 9e3ac0028513af622688328de1ea42e2c14aa61c Mon Sep 17 00:00:00 2001 From: Norm Rasmussen Date: Tue, 7 Mar 2023 21:35:44 -0500 Subject: [PATCH] Good progress. Bulk adds are working for emails and groups seperately, but not together. I think I need to for loop through each item to make it work. --- app/__pycache__/routes.cpython-311.pyc | Bin 19016 -> 16927 bytes app/routes.py | 117 ++++++++++++------------- app/templates/options.html | 7 -- 3 files changed, 56 insertions(+), 68 deletions(-) diff --git a/app/__pycache__/routes.cpython-311.pyc b/app/__pycache__/routes.cpython-311.pyc index 3c3a805e781aa8c30345c3e61c96db6f604d5631..3091544f0d79279e1eeaac0d6019bd1b777c826d 100644 GIT binary patch delta 3807 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 A(f|Me delta 5759 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 diff --git a/app/routes.py b/app/routes.py index 7e3db66..f9a0f45 100644 --- a/app/routes.py +++ b/app/routes.py @@ -230,11 +230,6 @@ def bulk_add_groups_opts(): return "This isn't working. Let's go our own way." -@app.route("/options", methods=["GET", "POST"]) -def ppl_to_groups_opts(): - pass - - @app.route("/bulk_add", methods=["GET", "POST"]) def bulk_add(): if request.method == "POST": @@ -245,20 +240,32 @@ def bulk_add(): emails = emails.split("\n") emails = [email.strip() for email in emails] emails = [re.sub(r'[,]', "", email) for email in emails] - print(emails) - print(type(emails)) - # return api_add_ppl_groups(emails, groups) elif "," in emails: emails = emails.split(",") emails = [email.strip() for email in emails] - # return api_add_ppl_groups(emails, groups) + else: + emails = [] + emails.append(emails) if groups: if "\n" in groups: groups = groups.split("\n") groups = [group.strip() for group in groups] + groups = [re.sub(r'[,]', "", group) for group in groups] elif "," in groups: groups = groups.split(",") groups = [group.strip() for group in groups] + else: + groups = [] + groups.append(groups) + + if emails and groups: + print(emails) + print(groups) + return api_add_ppl_groups(emails, groups) + elif emails: + return api_add_ppl(emails) + elif groups: + return api_add_groups(groups) return render_template('bulk_add.html') @@ -267,16 +274,44 @@ def bulk_add(): # groupdict = {} # groupdict["name"] = group + def api_add_ppl(emails): - pass + print(emails) + endpoint = "v2/bulk/people" + payload = { + "data": { + "attributes": {"people": [{"email": emails}]} + } + } + headers = { + "accept": "application/json", + "content-type": "application/json", + "X-Api-Key": session["key"], + } + response = requests.post(url + endpoint, json=payload, headers=headers) + return check_response(response) def api_add_groups(groups): - pass + print(groups) + endpoint = "v2/bulk/people" + payload = { + "data": { + "attributes": {"people": [{"groups": groups}]} + } + } + headers = { + "accept": "application/json", + "content-type": "application/json", + "X-Api-Key": session["key"], + } + response = requests.post(url + endpoint, json=payload, headers=headers) + return check_response(response) def api_add_ppl_groups(emails, groups): endpoint = "v2/bulk/people" + print(len(groups)) combinations = list(itertools.product(emails, groups)) print(combinations) payload = { @@ -284,75 +319,35 @@ def api_add_ppl_groups(emails, groups): "attributes": {"people": [{"email": emails, "groups": groups}]} } } + print(payload) headers = { "accept": "application/json", "content-type": "application/json", "X-Api-Key": session["key"], } response = requests.post(url + endpoint, json=payload, headers=headers) - response = str(response) - if "202" in response: - error = "Success! People have been added successfully." - return render_template( - "bulk_add_ppl.html", - table=session["dfgroups"], - title="People Added", - error=error, - ) - elif "403" in response: - error = "Uh oh. Looks like you don't have appropriate privileges." - elif "422" in response: - error = "Hm. Looks like something was wrong with the names." - return render_template( - "bulk_add_people.html", - table=session["dfgroups"], - title="People Added", - error=error, - ) - else: - error = "Shrug" - return render_template("bulk_add_ppl.html", title="Shrug", errors=error) + return check_response(response) -def api_add_ppl(): - endpoint = "v2/bulk/people" - payload = {"data": {"attributes": {"people": [{"email": emails}]}}} - headers = { - "accept": "application/json", - "content-type": "application/json", - "X-Api-Key": session["key"], - } - response = requests.post(url + endpoint, json=payload, headers=headers) +def check_response(response): response = str(response) if "202" in response: error = "Success! People have been added successfully." - return render_template( - "bulk_add_ppl.html", - table=session["dfgroups"], - title="People Added", - error=error, - ) + return render_template("bulk_add.html", title="People Added", error=error) elif "403" in response: error = "Uh oh. Looks like you don't have appropriate privileges." + return render_template("bulk_add.html", error=error) elif "422" in response: - error = "Hm. Looks like something was wrong with the names." - return render_template( - "bulk_add_people.html", - table=session["dfgroups"], - title="People Added", - error=error, - ) + error = "Hm. Looks like something was wrong with the data you added." + return render_template("bulk_add.html", error=error) else: error = "Shrug" - return render_template("bulk_add_ppl.html", title="Shrug", errors=error) - error = "No Data was Loaded. Try again, bozo." - return render_template("bulk_add_ppl.html", title="No Data", errors=error) - + return render_template("bulk_add.html", title="Shrug", errors=error) @app.route("/templates", methods=["GET", "POST"]) def templates(): pass - +''' @app.route("/bulk_add_groups", methods=["GET", "POST"]) def bulk_add_groups(): grouparr = [] @@ -408,7 +403,7 @@ def bulk_add_groups(): else: error = "Shrug" return render_template("bulk_add_groups.html", title="Shrug", errors=error) - +''' @app.route("/bulk_courses_to_groups", methods=["GET", "POST"]) def bulk_courses_to_groups(): diff --git a/app/templates/options.html b/app/templates/options.html index 2b86847..913cd64 100644 --- a/app/templates/options.html +++ b/app/templates/options.html @@ -5,12 +5,5 @@ {% block content %}

Hello! You're currently accessing {{ session.school }}.

-

You have two options here. You can click one of the options above and upload - people/courses/groups manually. Or, you can upload a CSV, and then select one - of the options and perform the action with the data in the CSV. Note that you - may need specific IDs for certain tasks. -

- -{% include 'csv.html' %} {% endblock %}