Skip to content

Commit

Permalink
Refactor the code, destructure user and remove references by index
Browse files Browse the repository at this point in the history
  • Loading branch information
TraciebelWairimu committed Feb 8, 2024
1 parent cdc036d commit a967761
Showing 1 changed file with 21 additions and 29 deletions.
50 changes: 21 additions & 29 deletions importer/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,18 +95,21 @@ def handle_request(request_type, payload, url):
# it also adds the user to the provided keycloak group
# and sets the user password
def create_user(user):
(firstName, lastName, username, email, id, userType, _, keycloakGroupID,
keycloakGroupName, applicationID, password) = user

with open("json_payloads/keycloak_user_payload.json") as json_file:
payload_string = json_file.read()

obj = json.loads(payload_string)
obj["firstName"] = user[0]
obj["lastName"] = user[1]
obj["username"] = user[2]
obj["email"] = user[3]
obj["attributes"]["fhir_core_app_id"][0] = user[9]
obj["firstName"] = firstName
obj["lastName"] = lastName
obj["username"] = username
obj["email"] = email
obj["attributes"]["fhir_core_app_id"][0] = applicationID

final_string = json.dumps(obj)
logging.info("Creating user: " + user[2])
logging.info("Creating user: " + username)
r = handle_request("POST", final_string, config.keycloak_url + "/users")

if r.status_code == 201:
Expand All @@ -115,14 +118,14 @@ def create_user(user):
user_id = (new_user_location.split("/"))[-1]

# add user to group
payload = '{"id": "' + user[7] + '", "name": "' + user[8] + '"}'
group_endpoint = user_id + "/groups/" + user[7]
payload = '{"id": "' + keycloakGroupID + '", "name": "' + keycloakGroupName + '"}'
group_endpoint = user_id + "/groups/" + keycloakGroupID
url = config.keycloak_url + "/users/" + group_endpoint
logging.info("Adding user to Keycloak group: " + user[8])
logging.info("Adding user to Keycloak group: " + keycloakGroupName)
r = handle_request("PUT", payload, url)

# set password
payload = '{"temporary":false,"type":"password","value":"' + user[10] + '"}'
payload = '{"temporary":false,"type":"password","value":"' + password + '"}'
password_endpoint = user_id + "/reset-password"
url = config.keycloak_url + "/users/" + password_endpoint
logging.info("Setting user password")
Expand All @@ -137,18 +140,8 @@ def create_user(user):
# new user and posts them to the FHIR api for creation
def create_user_resources(user_id, user):
logging.info("Creating user resources")
(
firstName,
lastName,
username,
email,
id,
*_,
keycloakGroupID,
keycloakGroupName,
_,
password,
) = user
(firstName, lastName, username, email, id, userType,
_, keycloakGroupID, keycloakGroupName, _, password) = user

# generate uuids
if len(str(id).strip()) == 0:
Expand Down Expand Up @@ -178,15 +171,15 @@ def create_user_resources(user_id, user):
ff = (
payload_string.replace("$practitioner_uuid", practitioner_uuid)
.replace("$keycloak_user_uuid", user_id)
.replace("$firstName", user[0])
.replace("$lastName", user[1])
.replace("$email", user[3])
.replace("$firstName", firstName)
.replace("$lastName", lastName)
.replace("$email", email)
.replace("$group_uuid", group_uuid)
.replace("$practitioner_role_uuid", practitioner_role_uuid)
)

obj = json.loads(ff)
if user[5].strip() == "Supervisor":
if userType.strip() == "Supervisor":
obj[2]["resource"]["code"] = {
"coding": [
{
Expand All @@ -196,7 +189,7 @@ def create_user_resources(user_id, user):
}
]
}
elif user[5].strip() == "Practitioner":
elif userType.strip() == "Practitioner":
obj[2]["resource"]["code"] = {
"coding": [
{
Expand Down Expand Up @@ -894,8 +887,7 @@ def main(
practitioner_exists = confirm_practitioner(user, user_id)
if not practitioner_exists:
payload = create_user_resources(user_id, user)
# handle_request("POST", payload, config.fhir_base_url)
logging.info(payload)
handle_request("POST", payload, config.fhir_base_url)
logging.info("Processing complete!")
elif resource_type == "locations":
logging.info("Processing locations")
Expand Down

0 comments on commit a967761

Please sign in to comment.