def get_my_baskets(user_id: str = None) -> Optional[pd.DataFrame]: """ Retrieve a list of baskets a user is permissioned to :param user_id: Marquee user/app ID (default is current application's id) :return: dataframe of baskets user has access to **Usage** Retrieve a list of baskets a user is permissioned to **Examples** Retrieve a list of baskets the current user is permissioned to >>> from gs_quant.markets.indices_utils import * >>> >>> get_my_baskets() """ user_id = user_id if user_id is not None else GsSession.current.client_id tag = f'Custom Basket:{user_id}' response = GsMonitorsApi.get_monitors(tags=tag) if len(response): row_groups = get(response, '0.parameters.row_groups') my_baskets = [] for row_group in row_groups: entity_ids = [entity.id for entity in row_group.entity_ids] baskets = GsAssetApi.get_many_assets_data( id=entity_ids, fields=['id', 'ticker', 'name', 'liveDate']) my_baskets += [ dict(monitor_name=row_group.name, id=get(basket, 'id'), ticker=get(basket, 'ticker'), name=get(basket, 'name'), live_date=get(basket, 'liveDate')) for basket in baskets ] return pd.DataFrame(my_baskets)
def test_get_many_monitors(mocker): mock_response = { 'results': (Monitor(id='abc', name='test', type='assets'), Monitor(id='bde', name='test2', type='assets')), 'totalResults': 2 } expected_response = (Monitor(id='abc', name='test', type='assets'), Monitor(id='bde', name='test2', type='assets')) # mock GsSession mocker.patch.object(GsSession.__class__, 'current', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', return_value=mock_response) # run test GsMonitorsApi.get_monitors() GsSession.current._get.assert_called_with('/monitors?limit=100', cls=Monitor) GsMonitorsApi.get_monitors(monitor_id='abc') GsSession.current._get.assert_called_with('/monitors?id=abc&limit=100', cls=Monitor) GsMonitorsApi.get_monitors(owner_id='aedf') GsSession.current._get.assert_called_with( '/monitors?ownerId=aedf&limit=100', cls=Monitor) GsMonitorsApi.get_monitors(name='name') GsSession.current._get.assert_called_with('/monitors?name=name&limit=100', cls=Monitor) GsMonitorsApi.get_monitors(folder_name='folderName') GsSession.current._get.assert_called_with( '/monitors?folderName=folderName&limit=100', cls=Monitor) GsMonitorsApi.get_monitors(monitor_type='type') GsSession.current._get.assert_called_with('/monitors?type=type&limit=100', cls=Monitor) response = GsMonitorsApi.get_monitors(name='name', owner_id='ia', limit=10) GsSession.current._get.assert_called_with( '/monitors?ownerId=ia&name=name&limit=10', cls=Monitor) assert response == expected_response