diff --git a/planetmint/backend/models/dbtransaction.py b/planetmint/backend/models/dbtransaction.py index a78e257..38b8f8e 100644 --- a/planetmint/backend/models/dbtransaction.py +++ b/planetmint/backend/models/dbtransaction.py @@ -28,7 +28,7 @@ class DbTransaction: inputs=Input.from_list_dict(transaction["inputs"]), assets=Asset.from_list_dict(transaction["assets"]), metadata=MetaData.from_dict(transaction["metadata"]), - script=Script.from_dict(transaction["script"]), + script=Script.from_dict(transaction["script"]) if "script" in transaction else None, ) @staticmethod @@ -53,7 +53,8 @@ class DbTransaction: @staticmethod def remove_generated_or_none_output_keys(output): output["condition"]["details"] = {k: v for k, v in output["condition"]["details"].items() if v is not None} - output.pop("id") + if "id" in output: + output.pop("id") return output diff --git a/planetmint/backend/models/output.py b/planetmint/backend/models/output.py index 0690fd0..cc37485 100644 --- a/planetmint/backend/models/output.py +++ b/planetmint/backend/models/output.py @@ -113,6 +113,17 @@ class Output: transaction_id=output[5], ) + @staticmethod + def from_dict(output_dict: dict, index: int, transaction_id: str) -> Output: + return Output( + id="placeholder", + amount=int(output_dict["amount"]), + public_keys=output_dict["public_keys"], + condition=Condition.from_dict(output_dict["condition"]), + index=index, + transaction_id=transaction_id + ) + def to_dict(self) -> dict: return { "id": self.id, diff --git a/planetmint/lib.py b/planetmint/lib.py index 52ac0ae..8ec27e5 100644 --- a/planetmint/lib.py +++ b/planetmint/lib.py @@ -389,7 +389,9 @@ class Planetmint(object): if input_tx is None: for ctxn in current_transactions: if ctxn.id == input_txid: - input_tx = ctxn + ctxn_dict = ctxn.to_dict() + input_tx = DbTransaction.from_dict(ctxn_dict) + _output = [Output.from_dict(output, index, ctxn.id) for index, output in enumerate(ctxn_dict["outputs"])] if input_tx is None: raise InputDoesNotExist("input `{}` doesn't exist".format(input_txid))