usawa

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

commit b64223a28abf188ba06699b29315684dd652d666
parent 88ef1be184e5b4f071e6cf4bda5409288195119f
Author: lash <dev@holbrook.no>
Date:   Thu,  2 Apr 2026 16:45:34 -0600

Add attachment export option in export cli

Diffstat:
Mdummy/usawa/runnable/export.py | 32++++++++++++++++++++++++--------
1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/dummy/usawa/runnable/export.py b/dummy/usawa/runnable/export.py @@ -15,8 +15,9 @@ from usawa import Ledger, Entry, EntryPart, DemoWallet, UnitIndex, load, ACL from usawa.constant import CATEGORIES from usawa.store import LedgerStore from usawa.resolve.fs import FSResolver +from usawa.error import VerifyError -logging.basicConfig(level=logging.DEBUG) +logging.basicConfig(level=logging.WARNING) logg = logging.getLogger() @@ -61,10 +62,15 @@ def main(): argp = argparse.ArgumentParser() argp.add_argument('-o', type=str, dest='output', help='output dir for resulting XML entry documents') argp.add_argument('-c', type=str, help='override config dir') + argp.add_argument('-v', type=str, choices=['info','debug','warning','error'], help='be verbose') argp.add_argument('--valkey-host', dest='valkey_host', type=str, default='localhost', help='Valkey host') argp.add_argument('--valkey-port', dest='valkey_port', type=int, default=6379, help='Valkey port') argp.add_argument('ledger_xml_file', type=str, help='load ledger metadata from XML file') arg = argp.parse_args() + + if arg.v: + logg.setLevel(getattr(logging, arg.v.upper())) + ctx = Context.from_args(arg) #ledger = None @@ -90,18 +96,28 @@ def main(): else: raise ValueError('invalid store type: ' + store_type) store = LedgerStore(db, ledger) - #storedb = ValkeyStore('', host=ctx.valkey_host, port=ctx.valkey_port) - #store = LedgerStore(storedb, ledger) - #pk = store.get_key() - #wallet = DemoWallet(privatekey=pk) - #wallet = store.get_key(DemoWallet, passphrase=cfg.get('WALLET_KEY_PASSPHRASE')) wallet = store.get_default_key(DemoWallet) acl = ACL.from_wallet(wallet) store.load(acl=acl) - resolve = FSResolver(ctx.output) + resolve_out = FSResolver(ctx.output) + resolve_in = None + resolve_in_path = cfg.get('FS_RESOLVER_STORE_PATH') + if resolve_in_path != None: + resolve_in = FSResolver(resolve_in_path) for k in ledger.entries: - r = resolve.put_entry(ledger.entries[k], lookup='sha512') + o = ledger.entries[k] + r = resolve_out.put_entry(o, lookup='sha512') + if resolve_in != None: + for oo in o.attachment: + k = oo.get_digest(binary=True) + try: + v = resolve_in.get(k) + except VerifyError: + logg.error('attachment retrieve fail verify: {}'.format(k.hex())) + continue + resolve_out.put(k, v) + logg.info('put attachment {}'.format(k.hex())) if __name__ == '__main__':