commit fb3155a9489f195c33f8e5eebb2afd7f06696df7
parent a195b11ca3617e1b14355a0861f5cfcfa68fd602
Author: Carlosokumu <carlosokumu254@gmail.com>
Date: Mon, 9 Mar 2026 16:51:10 +0300
set default unit of account
Diffstat:
1 file changed, 38 insertions(+), 33 deletions(-)
diff --git a/dummy/usawa/storage/entry_mapper.py b/dummy/usawa/storage/entry_mapper.py
@@ -11,12 +11,12 @@ logg = logging.getLogger("storage.entry_mapper")
class EntryMapper:
"""Maps between domain model (LedgerEntry) and storage model (Entry)"""
-
+
@staticmethod
- def to_entry(domain: LedgerEntry, ledger, unitindex=None):
+ def to_entry(domain: LedgerEntry, ledger, unitindex=UnitIndex("BTC")):
"""
Convert LedgerEntry (domain) to Entry (storage)
-
+
:param domain: Domain model entry
:type domain: LedgerEntry
:param ledger: The ledger object (for parent digest)
@@ -26,44 +26,51 @@ class EntryMapper:
:return: Storage model entry
:rtype: Entry
"""
-
-
+
if domain.tx_date is None:
raise ValueError("Transaction date is required for storage")
-
-
+
tx_date = domain.tx_date
if isinstance(tx_date, date) and not isinstance(tx_date, datetime):
tx_date = datetime.combine(tx_date, datetime.min.time())
-
-
+
parent = ledger.current() if ledger else None
ref = domain.transaction_ref if domain.transaction_ref else None
-
entry = Entry(
- serial= ledger.serial,
+ serial=ledger.serial,
tx_date=tx_date,
- parent=parent,
+ parent=parent,
description=domain.description or "",
- ref=ref,
- unitindex = UnitIndex('BTC')
+ ref=ref,
+ unitindex=unitindex,
+ )
+
+ source_amount = unitindex.from_floatstring(
+ unitindex.default_unit, str(domain.amount)
)
-
-
- uidx = UnitIndex('BTC')
- source_amount = uidx.from_floatstring('BTC', str(domain.amount))
dest_amount = -source_amount
- source_part = EntryPart("BTC", domain.source_type.lower(), domain.source_path, source_amount, debit=True)
+ source_part = EntryPart(
+ unitindex.default_unit,
+ domain.source_type.lower(),
+ domain.source_path,
+ source_amount,
+ debit=True,
+ )
entry.add_part(source_part, debit=True)
- dest_part = EntryPart("BTC", domain.dest_type.lower(), domain.dest_path, dest_amount, debit=False)
+ dest_part = EntryPart(
+ unitindex.default_unit,
+ domain.dest_type.lower(),
+ domain.dest_path,
+ dest_amount,
+ debit=False,
+ )
entry.add_part(dest_part, debit=False)
-
+
return entry
-
-
+
@staticmethod
def to_domain_entry(storage_entry) -> LedgerEntry:
"""
@@ -73,13 +80,13 @@ class EntryMapper:
source_unit = ""
source_type = ""
source_path = ""
- amount = 0.0
+ amount = 0.0
dest_unit = ""
dest_type = ""
dest_path = ""
if storage_entry.debit:
- debit_part = storage_entry.debit[0]
+ debit_part = storage_entry.debit[0]
source_unit = debit_part.unit
source_type = debit_part.typ
source_path = debit_part.account
@@ -90,7 +97,6 @@ class EntryMapper:
amount = 0.0
is_debit = None
-
if storage_entry.credit:
credit_part = storage_entry.credit[0]
dest_unit = credit_part.unit
@@ -101,19 +107,16 @@ class EntryMapper:
dest_unit = dest_type = dest_path = ""
is_credit = None
-
- parent_digest = parent_digest = storage_entry.parent.hex()
+ parent_digest = parent_digest = storage_entry.parent.hex()
tx_date = storage_entry.dt
date_registered = storage_entry.dtreg
-
transaction_ref = str(storage_entry.ref) if storage_entry.ref else None
- external_ref = None
+ external_ref = None
signer_pubkeys = list(storage_entry.sigs.keys())
-
domain = LedgerEntry(
external_reference=external_ref,
description=storage_entry.description,
@@ -124,14 +127,16 @@ class EntryMapper:
dest_unit=dest_unit,
dest_type=dest_type,
dest_path=dest_path,
- attachments=storage_entry.attachment.copy() if storage_entry.attachment else [],
+ attachments=(
+ storage_entry.attachment.copy() if storage_entry.attachment else []
+ ),
serial=storage_entry.serial,
tx_date=tx_date,
tx_reference=storage_entry.ref,
date_registered=date_registered,
signer_pubkeys=signer_pubkeys,
parent_digest=parent_digest,
- unit_index=storage_entry.uidx
+ unit_index=storage_entry.uidx,
)
return domain