diff options
Diffstat (limited to 'src/api/utils.py')
-rw-r--r-- | src/api/utils.py | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/src/api/utils.py b/src/api/utils.py deleted file mode 100644 index 9a9c260..0000000 --- a/src/api/utils.py +++ /dev/null @@ -1,132 +0,0 @@ -# These functions are called from views and perform the actual request to LibLaaS - -import json -from django.http.response import JsonResponse, HttpResponse -import requests -import os - -from dashboard.forms import * -liblaas_base_url = os.environ.get("LIBLAAS_BASE_URL") - -# IPA Stuff -def ipa_query_user(ipa_username): - url = liblaas_base_url + "user/" + ipa_username - print("Getting ipa user for", ipa_username, url) - try: - response = requests.get(url) - data = response.json() - print("ipa user is", data) - return data # Expects a dict - except Exception as e: - print(e) - return None - -# Queries for an IPA user using dashboard username -# Returns a result -def get_ipa_migration_form(user, profile): - # ipa_user = ipa_query_user(str(dashboard_user)) - # if (ipa_user and ipa_user.mail is ) - # pass - dashboard_username = str(user) - dashboard_email = profile.email_addr - first_name = user.first_name - last_name = user.last_name - - ipa_user = ipa_query_user(dashboard_username) - print("Attempting auto migration with", dashboard_username, dashboard_email, ipa_user) - if (ipa_user): - if (dashboard_email == ipa_user["mail"]): - # User is found and email match - print("User is found and email match") - return { - "form": ReadOnlyIPAAccountForm(initial={'ipa_username': ipa_user['uid'],'first_name': ipa_user["givenname"], 'last_name': ipa_user["sn"], 'email': ipa_user["mail"], 'company': ipa_user["ou"]}), - "message": "We have located the following IPA account matching your username and email. Please confirm to link your account. You may change these details at any time.", - "action": "api/ipa/confirm", - "button": "Link" - } - - else: - # User is found and emails don't match - print("User is found and emails don't match") - return { - "form": ConflictIPAAcountForm(initial={'first_name': first_name, 'last_name': last_name, 'email': dashboard_email}), - "message": "Our records indicate that you do not currently have an account in our IPA system, or your emails do not match. Please enter the following details to enroll your account.", - "action": "/", - "button": "Submit" - } - else: - # User is not found - print("User is not found") - return { - "form": NewIPAAccountForm(initial={'first_name': first_name, 'last_name': last_name, 'email': dashboard_email}), - "message": "Our records indicate that you do not currently have an account in our IPA system, or your usernames do not match. Please enter the following details to enroll your account.", - "action": "api/ipa/create", - "button": "Submit" - } - -# Removes leading and trailing white space from a list of ssh keys and returns the cleaned list -def clean_ssh_keys(ssh_key_list): - cleaned = [] - for key in ssh_key_list: - cleaned.append(key.strip()) - return cleaned - -# Take a list of strings, sends it to liblaas, replacing the IPA keys with the new keys -def ipa_set_ssh(user_profile, ssh_key_list): - url = liblaas_base_url + "user/" + user_profile.ipa_username + "/ssh" - ssh_key_list = clean_ssh_keys(ssh_key_list) - try: - requests.post(url, data=json.dumps(ssh_key_list), headers={'Content-Type': 'application/json'}) - return HttpResponse(status=200) - except Exception as e: - print(e) - return HttpResponse(status=500) - -def ipa_set_company(user_profile, company_name): - url = liblaas_base_url + "user/" + user_profile.ipa_username + "/company" - print("Setting company with URL", url) - try: - requests.post(url, data=json.dumps(company_name), headers={'Content-Type': 'application/json'}) - return HttpResponse(status=200) - except Exception as e: - print(e) - return HttpResponse(status=500) - -def get_booking_prereqs_validator(user_profile): - ipa_user = None - if (user_profile.ipa_username != None and user_profile.ipa_username != ""): - ipa_user = ipa_query_user(user_profile.ipa_username) - - if ipa_user == None: - print("No user") - return { - "form": None, - "exists": "false", - "action": "no user", - "result": 0 - } - - if (not "ou" in ipa_user) or (ipa_user["ou"] == ""): - print("Missing company") - return { - "form": SetCompanyForm(), - "exists": "true", - "action": "/api/ipa/workflow-company", - "result": 1 - } - - if (not "ipasshpubkey" in ipa_user) or (ipa_user["ipasshpubkey"] == []): - print("Missing SSH key") - return { - "form": SetSSHForm(), - "exists": "true", - "action": "/api/ipa/workflow-ssh", - "result": 2, - } - - return { - "form": None, - "exists": "false", - "action": "", - "result": -1 - }
\ No newline at end of file |