usawa

Signed, immutable accounting.
Log | Files | Refs | Submodules | LICENSE

commit de08173d0d641881561d1e9653c0f3794b695847
parent f4084d5aba741fd2e8ca98f77ebf0fcb6da4aaa2
Author: lash <dev@holbrook.no>
Date:   Fri,  1 May 2026 09:55:39 -0600

Fix bogus imports exchange rate, add extref to asset export

Diffstat:
Mdummy/usawa/asset.py | 5+++++
Mdummy/usawa/cli/entry.py | 9++++++++-
Mdummy/usawa/unit.py | 1+
3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/dummy/usawa/asset.py b/dummy/usawa/asset.py @@ -242,6 +242,11 @@ class Asset(UsawaElement): o.text = self.digest.hex() tree.append(o) + if self.extref: + o = lxml.etree.SubElement(tree, "extref") + o.text = self.extref + tree.append(o) + return tree """Generate and return an XML representation of the asset. diff --git a/dummy/usawa/cli/entry.py b/dummy/usawa/cli/entry.py @@ -94,7 +94,12 @@ def parse_side(ctx, v): def parse_txdate(ctx, v): - return datetime.date.fromisoformat(v) + r = None + try: + r = datetime.date.fromisoformat(v) + except ValueError: + r = datetime.datetime.fromisoformat(v) + return r def input_or_default(prompt, default=None, allow_empty=False, postfix=': ', validate_fn=None): @@ -397,6 +402,8 @@ class EntrySession: def do_interactive_one(self): v = input_or_default('Entry description', self.entry.description) + if len(v) < 2: + raise ValueError('description must be more than one letter') self.entry.description = v v = input_or_default('Internal ref', self.entry.ref) self.entry.ref = v diff --git a/dummy/usawa/unit.py b/dummy/usawa/unit.py @@ -129,6 +129,7 @@ class UnitIndex: precision = int(o.find('precision', namespaces=nsmap()).text) logg.debug('add unit {} precision {}'.format(sym, precision)) r.detail[sym] = precision + r.rate[sym] = 1000000000 r.check() return r