uktrade/directory-sso-profile

View on GitHub
core/helpers.py

Summary

Maintainability
A
0 mins
Test Coverage
from directory_api_client.client import api_client
from directory_constants import user_roles
from directory_sso_api_client import sso_api_client


def create_user_profile(sso_session_id, data):
    profile_response = sso_api_client.user.create_user_profile(sso_session_id=sso_session_id, data=data)
    profile_response.raise_for_status()
    # Call made to Supplier to keep name in Sync
    # To be removed once we remove from supplier model
    update_supplier_profile_name(sso_session_id=sso_session_id, data=data)
    return profile_response


def update_user_profile(sso_session_id, data):
    profile_response = sso_api_client.user.update_user_profile(sso_session_id=sso_session_id, data=data)
    profile_response.raise_for_status()
    # Call made to Supplier to keep name in Sync
    # To be removed once we remove from supplier model
    update_supplier_profile_name(sso_session_id=sso_session_id, data=data)
    return profile_response


def update_supplier_profile_name(sso_session_id, data):
    name = extract_full_name(data)
    response = api_client.supplier.profile_update(sso_session_id=sso_session_id, data={'name': name})
    if response.status_code not in [200, 404]:
        response.raise_for_status()
    return response


def extract_full_name(data):
    first_name = data.get('first_name')
    last_name = data.get('last_name')
    return f'{first_name} {last_name}'


def get_company_admins(sso_session_id):
    response = api_client.company.collaborator_list(sso_session_id=sso_session_id)
    response.raise_for_status()

    collaborators = response.json()
    return [collaborator for collaborator in collaborators if collaborator['role'] == user_roles.ADMIN]