moved field removal methods to DbTransaction

redefined strcuture of DbTransction.to_dict() to be equal to the one of Transactions.to_dict()

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
This commit is contained in:
Jürgen Eckel 2023-01-10 11:05:50 +01:00
parent 61c35bd0fb
commit d05acebb2f
No known key found for this signature in database
3 changed files with 26 additions and 23 deletions

View File

@ -8,7 +8,6 @@ from dataclasses import dataclass, field
from planetmint.backend.models import Asset, MetaData, Input, Script, Output
@dataclass
class DbTransaction:
id: str = ""
@ -44,14 +43,30 @@ class DbTransaction:
script=Script.from_dict(transaction[6]),
)
@staticmethod
def remove_generated_fields(tx_dict: dict):
tx_dict["outputs"] = [DbTransaction.remove_generated_or_none_output_keys(output) for output in tx_dict["outputs"]]
if "script" in tx_dict and tx_dict["script"] is None:
tx_dict.pop("script")
return tx_dict
@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")
return output
def to_dict(self) -> dict:
return {
"id": self.id,
"operation": self.operation,
"version": self.version,
tx = {
"inputs": Input.list_to_dict(self.inputs),
"outputs": Output.list_to_dict(self.outputs),
"assets": Asset.list_to_dict(self.assets),
"operation": self.operation,
"metadata": self.metadata.to_dict() if self.metadata is not None else None,
"assets": Asset.list_to_dict(self.assets),
"version": self.version,
"id": self.id,
"script": self.script.to_dict() if self.script is not None else None,
}
tx = DbTransaction.remove_generated_fields(tx)
return tx

View File

@ -39,7 +39,7 @@ from transactions.common.transaction_mode_types import BROADCAST_TX_COMMIT, BROA
from transactions.types.elections.election import Election
from transactions.types.elections.validator_utils import election_id_to_public_key
from planetmint.backend.models import Output
from planetmint.backend.models import Output, DbTransaction
from planetmint.backend.tarantool.const import TARANT_TABLE_GOVERNANCE, TARANT_TABLE_TRANSACTION
from planetmint.config import Config
from planetmint import backend, config_utils, fastquery
@ -401,7 +401,7 @@ class Planetmint(object):
input_conditions.append(output)
tx_dict = input_tx.to_dict()
tx_dict["outputs"] = Output.list_to_dict(_output)
tx_dict = remove_generated_fields(tx_dict)
tx_dict = DbTransaction.remove_generated_fields(tx_dict)
pm_transaction = Transaction.from_dict(tx_dict, False)
input_txs.append(pm_transaction)
@ -940,15 +940,3 @@ class Planetmint(object):
Block = namedtuple("Block", ("app_hash", "height", "transactions"))
def remove_generated_fields(tx_dict: dict):
tx_dict["outputs"] = [remove_generated_or_none_output_keys(output) for output in tx_dict["outputs"]]
if tx_dict["script"] is None:
tx_dict.pop("script")
return tx_dict
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")
return output

View File

@ -11,7 +11,7 @@ from transactions.common.transaction import Transaction
from transactions.types.assets.create import Create
from transactions.types.assets.transfer import Transfer
from planetmint.backend.interfaces import Asset, MetaData
from planetmint.lib import remove_generated_fields
from planetmint.backend.models import DbTransaction
pytestmark = pytest.mark.bdb
@ -50,7 +50,7 @@ def test_get_owned_ids(signed_create_tx, user_pk, db_conn):
txns = query.get_owned_ids(connection=db_conn, owner=user_pk)
tx_dict = signed_create_tx.to_dict()
owned_tx = remove_generated_fields(txns[0].to_dict())
owned_tx = DbTransaction.remove_generated_fields(txns[0].to_dict())
assert owned_tx == tx_dict