def get_user_orders(self, address, datatoken=None, service_id=None): dt = DataToken(datatoken) _orders = [] for log in dt.get_start_order_logs( self._web3, address, from_all_tokens=not bool(datatoken)): a = dict(log.args.items()) a["amount"] = from_base_18(int(log.args.amount)) a["marketFee"] = from_base_18(int(log.args.marketFee)) a = AttributeDict(a.items()) # 'datatoken', 'amount', 'timestamp', 'transactionId', 'did', 'payer', 'consumer', 'serviceId', 'serviceType' order = Order( log.address, a.amount, a.timestamp, log.transactionHash, f"did:op:{remove_0x_prefix(log.address)}", a.payer, a.consumer, a.serviceId, None, ) if service_id is None or order.serviceId == service_id: _orders.append(order) return _orders
def get_user_orders( self, address: str, datatoken: Optional[str] = None, service_id: Optional[int] = None, ) -> List[Order]: """ :return: List of orders `[Order]` """ dt = DataToken(self.web3, datatoken) _orders = [] for log in dt.get_start_order_logs( address, from_all_tokens=not bool(datatoken) ): a = dict(log.args.items()) a["amount"] = int(log.args.amount) a["marketFee"] = int(log.args.marketFee) a = AttributeDict(a.items()) # 'datatoken', 'amount', 'timestamp', 'transactionId', 'did', 'payer', 'consumer', 'serviceId', 'serviceType' order = Order( log.address, a.amount, a.timestamp, log.transactionHash, f"did:op:{remove_0x_prefix(log.address)}", a.payer, a.consumer, a.serviceId, None, ) if service_id is None or order.serviceId == service_id: _orders.append(order) return _orders
def test_order(web3, alice_ocean, alice_wallet): asset = get_registered_ddo(alice_ocean, get_metadata(), alice_wallet) dt = DataToken(web3, asset.data_token_address) service = asset.get_service(service_type=ServiceTypes.ASSET_ACCESS) sa = Service.from_json(service.as_dictionary()) order_requirements = alice_ocean.assets.order( asset.did, alice_wallet.address, sa.index ) assert order_requirements, "Order was unsuccessful." _order_tx_id = alice_ocean.assets.pay_for_service( web3, order_requirements.amount, order_requirements.data_token_address, asset.did, service.index, alice_wallet.address, alice_wallet, sa.get_c2d_address(), ) asset_folder = alice_ocean.assets.download( asset.did, sa.index, alice_wallet, _order_tx_id, alice_ocean.config.downloads_path, ) assert len(os.listdir(asset_folder)) >= 1, "The asset folder is empty." for order_log in dt.get_start_order_logs(): order_log_dict = dict(order_log.args.items()) order_log_dict["amount"] = int(order_log.args.amount) order_log_dict["marketFee"] = int(order_log.args.marketFee) order_args = [ order_log.address, order_log_dict["amount"], order_log_dict["timestamp"], order_log.transactionHash, f"did:op:{remove_0x_prefix(order_log.address)}", order_log_dict["payer"], order_log_dict["consumer"], order_log_dict["serviceId"], None, ] order = Order(*order_args) assert order, "The order does not exist." assert isinstance(order, tuple), "Order is not a tuple." assert ( order[0] == asset.data_token_address ), "The order data token address is different." assert order[5] == alice_wallet.address, "The payer is not the supposed one." assert order[6] == sa.get_c2d_address(), "The consumer is not the supposed one." assert len(order) == 9, "Different number of args."