def handler(event, context): event['import_type'] = None am_api = AssetManagersInterface(environment=ENVIRONMENT) token = am_api.session.tokens['IdToken'] user_attributes = jwt.decode(token, verify=False) user_amid = user_attributes.get('custom:asset_manager_id') if not user_amid: raise AttributeError( 'Invalid credentials. Could not determine user asset manager id.') relationships = am_api.retrieve_user_relationships( user_asset_manager_id=user_amid) if not relationships: raise ValueError('User does not have any Active relationships') asset_manager_id = None # Find the first non-demo account for relationship in relationships: asset_manager = am_api.retrieve(relationship.asset_manager_id) if asset_manager.account_type != 'Demo': asset_manager_id = asset_manager.asset_manager_id break if not asset_manager_id: raise ValueError( 'Could not find a valid asset manager for the specified user.') event['asset_manager_id'] = asset_manager_id return event
def interface_direct_class(data_class): """help to direct to the correct interface interacting with DB by class name only""" if data_class in ASSET: interface = AssetsInterface() elif data_class in PARTY: interface = PartiesInterface() elif data_class in BOOK: interface = BooksInterface() elif data_class in CORPORATE_ACTION: interface = CorporateActionsInterface() elif data_class in MARKET_DATA: interface = MarketDataInterface() elif data_class in TRANSACTION: interface = TransactionsInterface() else: interface = AssetManagersInterface() return interface
def setUp(self): self.longMessage = True # Print complete error message on failure self.asset_managers_interface = AssetManagersInterface() self.asset_manager_id = random.randint(1, 2**31-1) self.related_id = random.randint(1, 2**31-1)