"""Temporary functions"""
import json
import os.path
from collections.abc import Iterable
from materials_commons.cli.exceptions import MCCLIException
[docs]
def get_dataset(client, project_id, dataset_id):
    """Temporary workaround because Client.get_dataset is returning the wrong dataset"""
    dataset = client.get_dataset(project_id, dataset_id)
    dataset.project_id = project_id # TODO: update when project_id returned
    add_owner(client, dataset) # TODO: update when owner returned as object
    return dataset 
def _add_owner(client, obj):
    if hasattr(obj, 'owner'):
        return
    elif hasattr(obj, 'owner_id'):
        if not hasattr(client, '_users_by_id') or obj.owner_id not in client._users_by_id:
            users = client.list_users()
            client._users_by_id = {u.id:u for u in users}
        if obj.owner_id not in client._users_by_id:
            raise MCCLIException("Could not find owner_id:" + str(owner_id))
        obj.owner = client._users_by_id[obj.owner_id]
    else:
        raise MCCLIException("Object does not have owner or owner_id")
[docs]
def add_owner(client, objects):
    """Add 'owner' based on 'owner_id'
    Args:
        client (materials_commons.api.Client): Materials Commons Client
        objects (object or Iterable of objects): Objects with 'owner_id'
    Notes:
        This will create a cache, client._user_by_id, a dict of owner_id:materials_commons.api.User.
    """
    if isinstance(objects, Iterable):
        for obj in objects:
            _add_owner(client, obj)
    else:
        _add_owner(client, objects)