From d05acebb2fa27dce0eadb5431d647c19c978054f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Eckel?= Date: Tue, 10 Jan 2023 11:05:50 +0100 Subject: [PATCH] moved field removal methods to DbTransaction redefined strcuture of DbTransction.to_dict() to be equal to the one of Transactions.to_dict() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jürgen Eckel --- planetmint/backend/models/dbtransaction.py | 29 ++++++++++++++++------ planetmint/lib.py | 16 ++---------- tests/backend/tarantool/test_queries.py | 4 +-- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/planetmint/backend/models/dbtransaction.py b/planetmint/backend/models/dbtransaction.py index b065bf7..a78e257 100644 --- a/planetmint/backend/models/dbtransaction.py +++ b/planetmint/backend/models/dbtransaction.py @@ -8,7 +8,6 @@ from dataclasses import dataclass, field from planetmint.backend.models import Asset, MetaData, Input, Script, Output - @dataclass class DbTransaction: id: str = "" @@ -43,15 +42,31 @@ class DbTransaction: inputs=Input.from_list_dict(transaction[5]), 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, - "script": self.script.to_dict() if self.script 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 diff --git a/planetmint/lib.py b/planetmint/lib.py index 1bd3d5a..c1d0f7d 100644 --- a/planetmint/lib.py +++ b/planetmint/lib.py @@ -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 diff --git a/tests/backend/tarantool/test_queries.py b/tests/backend/tarantool/test_queries.py index 17ef799..46a6f8c 100644 --- a/tests/backend/tarantool/test_queries.py +++ b/tests/backend/tarantool/test_queries.py @@ -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