コード例 #1
0
 def search(self, asset_manager_ids=None, asset_ids=None, asset_classes=None, asset_types=None, 
            page_no=None, page_size=None):
     self.logger.info('Search for Assets - Asset Manager(s): %s', asset_manager_ids)
     search_params = {}
     # Potentially roll this into a loop through args rather than explicitly named - depends on additional validation
     if asset_manager_ids:
         search_params['asset_manager_ids'] = ','.join([str(amid) for amid in asset_manager_ids])
     if asset_ids:
         search_params['asset_ids'] = ','.join(asset_ids)
     if asset_classes:
         search_params['asset_classes'] = ','.join(asset_classes)
     if asset_types:
         search_params['asset_types'] = ','.join(asset_types)
     if page_no is not None:
         search_params['page_no'] = page_no
     if page_size:
         search_params['page_size'] = page_size
     url = self.endpoint + '/assets'
     response = self.session.get(url, params=search_params)
     if response.ok:
         assets = [json_to_asset(json_asset) for json_asset in response.json()]
         self.logger.info('Returned %s Assets.', len(assets))
         return assets
     else:
         self.logger.error(response.text)
         response.raise_for_status()
コード例 #2
0
 def assets_by_asset_manager(self, asset_manager_id):
     self.logger.info('Retrieve Assets By Asset Manager: %s', asset_manager_id)
     url = '%s/assets/%s' % (self.endpoint, asset_manager_id)
     response = self.session.get(url)
     if response.ok:
         assets = [json_to_asset(json_asset) for json_asset in response.json()]
         self.logger.info('Returned %s Assets.', len(assets))
         return assets
     else:
         self.logger.error(response.text)
         response.raise_for_status()
コード例 #3
0
 def deactivate(self, asset_manager_id, asset_id):
     self.logger.info('Deactivate Asset - Asset Manager: %s - Asset ID: %s', asset_manager_id, asset_id)
     url = '%s/assets/%s/%s' % (self.endpoint, asset_manager_id, asset_id)
     json = {'asset_status': 'Inactive'}
     response = self.session.patch(url, json=json)
     if response.ok:
         self.logger.info('Successfully Deactivated Asset - Asset Manager: %s - Asset ID: %s', asset_manager_id,
                          asset_id)
         return json_to_asset(response.json())
     else:
         self.logger.error(response.text)
         response.raise_for_status()
コード例 #4
0
 def partial(self, asset_manager_id, asset_id, updates):
     self.logger.info('Partial Amend Asset - Asset Manager: %s - Asset ID: %s', asset_manager_id,
                      asset_id)
     url = '%s/assets/%s/%s' % (self.endpoint, asset_manager_id, asset_id)
     # Setting handler ourselves so we can be sure Decimals work
     response = self.session.patch(url, data=json.dumps(updates, default=json_handler), headers=self.json_header)
     if response.ok:
         asset = json_to_asset(response.json())
         return asset
     else:
         self.logger.error(response.text)
         response.raise_for_status()
コード例 #5
0
 def amend(self, asset):
     self.logger.info('Amend Asset - Asset Manager: %s - Asset ID: %s', asset.asset_manager_id, asset.asset_id)
     url = '%s/assets/%s/%s' % (self.endpoint, asset.asset_manager_id, asset.asset_id)
     response = self.session.put(url, json=asset.to_interface())
     if response.ok:
         self.logger.info('Successfully Amended Asset - Asset Manager: %s - Asset ID: %s', asset.asset_manager_id,
                          asset.asset_id)
         asset = json_to_asset(response.json())
         return asset
     else:
         self.logger.error(response.text)
         response.raise_for_status()
コード例 #6
0
 def retrieve(self, asset_manager_id, asset_id, version=None):
     self.logger.info('Retrieve Asset - Asset Manager: %s - Asset ID: %s', asset_manager_id, asset_id)
     url = '%s/assets/%s/%s' % (self.endpoint, asset_manager_id, asset_id)
     if version:
         url += '?version=%d' % int(version)
     response = self.session.get(url)
     if response.ok:
         self.logger.info('Successfully Retrieved Asset - Asset Manager: %s - Asset ID: %s', asset_manager_id,
                          asset_id)
         return json_to_asset(response.json())
     else:
         self.logger.error(response.text)
         response.raise_for_status()
コード例 #7
0
 def upsert(self, asset):
     ''' upsert only support upserting one asset at a time'''
     self.logger.info('Upsert Asset - Asset Manager: %s - Asset ID: %s',
                      asset.asset_manager_id, asset.asset_id)
     url = '%s/assets/%s' % (self.endpoint, asset.asset_manager_id)
     response = self.session.post(url,
                                  json=asset.to_interface(),
                                  params={'upsert': True})
     if response.ok:
         self.logger.info(
             'Successfully Upserted Asset - Asset Manager: %s - Asset ID: %s',
             asset.asset_manager_id, asset.asset_id)
         asset = json_to_asset(response.json())
         return asset
     else:
         self.logger.error(response.text)
         response.raise_for_status()
コード例 #8
0
    def search(self, asset_manager_id, **kwargs):
        """
        Search for assets.

        Possible kwargs:
         * client_ids: list[int]
         * asset_statuses: list
         * asset_ids: list
         * reference_types: list
         * reference_values: list
         * asset_issuer_ids: list[int]
         * asset_classes: list
         * asset_types: list
         * country_ids: list
         * currencies: list

         * include_public: bool (default = True)
         * include_data_sources: bool (default = True)

         * page_no = int(query_params.get('page_no', '1')) if query_params else None
         * page_size = int(query_params.get('page_size', '100')) if query_params else None

        """
        self.logger.info("Search for Assets - Asset Manager: %s",
                         asset_manager_id)
        search_params = {}
        for k, v in kwargs.items():
            if not isinstance(v, str) and isinstance(v, Iterable):
                v = ",".join(str(i) for i in v)

            search_params[k] = v

        url = "%s/assets/%s" % (self.endpoint, asset_manager_id)
        response = self.session.get(url, params=search_params)
        if response.ok:
            return response.json(
            )  # Temporary hack since json won't map properly
            assets = [
                json_to_asset(json_asset) for json_asset in response.json()
            ]
            self.logger.info("Returned %s Assets.", len(assets))
            return assets
        else:
            self.logger.error(response.text)
            response.raise_for_status()
コード例 #9
0
 def new(self, asset):
     self.logger.info(
         "New Asset - Asset Manager: %s - Asset ID: %s",
         asset.asset_manager_id,
         asset.asset_id,
     )
     url = "%s/assets/%s" % (self.endpoint, asset.asset_manager_id)
     response = self.session.post(url, json=asset.to_interface())
     if response.ok:
         self.logger.info(
             "Successfully Created Asset - Asset Manager: %s - Asset ID: %s",
             asset.asset_manager_id,
             asset.asset_id,
         )
         asset = json_to_asset(response.json())
         return asset
     else:
         self.logger.error(response.text)
         response.raise_for_status()
コード例 #10
0
    def loose_search(self, asset_manager_id, query="", **kwargs):
        """
        Asset search API.

        Possible kwargs:
           * threshold: int (default = 0)
           * page_no: int (default = 1)
           * page_size: int (default = 100)
           * sort_fields: list (default = [])
           * asset_types: list (default = [])
           * include_public: bool (default = True)
           * include_data_sources: bool (default = True)
        """
        self.logger.info("Asset Search - Asset Manager: %s", asset_manager_id)
        url = "{endpoint}/assets/search/{asset_manager_id}".format(
            asset_manager_id=asset_manager_id,
            endpoint=self.endpoint,
        )
        params = {"query": query}
        for k, v in kwargs.items():
            if not isinstance(v, str) and isinstance(v, Iterable):
                v = ",".join(str(i) for i in v)

            params[k] = v

        response = self.session.get(url, params=params)
        if response.ok:
            data = response.json()
            assets = [
                json_to_asset(json_asset)
                for json_asset in data.get("hits", [])
            ]
            self.logger.info("Returned %s Assets.", len(assets))
            return assets
        else:
            self.logger.error(response.text)
            response.raise_for_status()
コード例 #11
0
 def test_JsonToAsset(self):
     asset = generate_asset()
     json_asset = asset.to_json()
     gen_asset = json_to_asset(json_asset)
     self.assertEqual(gen_asset, asset)