commit a4cf28f62393ba3223aac9abce68c49970312751
parent 357ae58af2a0510fea4564eec90ff808b5809c4a
Author: lash <dev@holbrook.no>
Date: Sun, 11 Jan 2026 08:07:48 +0100
Ensure default incoming.real element in new ledger tree
Diffstat:
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dummy/usawa/ledger.py b/dummy/usawa/ledger.py
@@ -266,6 +266,8 @@ class Ledger:
self.running = {}
incoming_old = self.tree.find('incoming', namespaces=nsmap())
logg.debug('inc {}'.format(lxml.etree.tostring(incoming_old)))
+
+ i = 0
for tree_real in incoming_old.xpath('ns:real[@unit]', namespaces=ns):
unit = tree_real.get('unit')
v = tree_real.find('asset', namespaces=nsmap())
@@ -279,6 +281,15 @@ class Ledger:
o.text = str(self.running[unit].asset)
o = lxml.etree.SubElement(real, NSPREFIX + 'liability', nsmap=nsmap())
o.text = str(self.running[unit].liability)
+ i += 1
+
+ if i == 0:
+ real = lxml.etree.SubElement(incoming, NSPREFIX + 'real', nsmap=nsmap())
+ real.set('unit', self.uidx.default_unit)
+ o = lxml.etree.SubElement(real, NSPREFIX + 'asset', nsmap=nsmap())
+ o.text = '0'
+ o = lxml.etree.SubElement(real, NSPREFIX + 'liability', nsmap=nsmap())
+ o.text = '0'
o = lxml.etree.SubElement(incoming, NSPREFIX + 'digest', nsmap=nsmap())
o.attrib['algo'] = 'sha512'
diff --git a/dummy/usawa/runnable/add.py b/dummy/usawa/runnable/add.py
@@ -119,8 +119,8 @@ argp.add_argument('--src-type', dest='src_type', type=str, choices=CATEGORIES, d
argp.add_argument('--dst-type', dest='dst_type', type=str, choices=CATEGORIES, default='asset', help='dest type')
argp.add_argument('-d', '--description', dest='description', type=str, help='interactive edit')
# TODO: read default from xml if not defined
-argp.add_argument('-u', '--unit', type=str, default=UnixIndex.default_unit, help='Unit to use for transaction')
-argp.add_argument('--unit-precision', dest='unit_precision', type=int, default=UnixIndex.default_precision, help='Unit precision')
+argp.add_argument('-u', '--unit', type=str, default=UnitIndex.default_unit, help='Unit to use for transaction')
+argp.add_argument('--unit-precision', dest='unit_precision', type=int, default=UnitIndex.default_precision, help='Unit precision')
argp.add_argument('--unit-rate', dest='unit_precision', type=float, default=1.0, help='Unit exchange rate')
argp.add_argument('ledger_xml_file', type=str, help='load ledger metadata from XML file')
arg = argp.parse_args()