commit 4b9d730cbefa7a0cf4100013a44d3c85c48001eb
parent 05d924a33e0d5643a4698015c73ad8b38d273230
Author: lash <dev@holbrook.no>
Date: Sat, 28 Mar 2026 10:31:13 -0600
Implement tx date entry
Diffstat:
2 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/dummy/usawa/entry.py b/dummy/usawa/entry.py
@@ -194,7 +194,7 @@ class Entry(UsawaElement):
self.dt = tx_date
self.uidx = unitindex
if tx_datereg == None:
- tx_datereg = datetime.datetime.utcnow()
+ tx_datereg = datetime.datetime.now(datetime.UTC)
self.dtreg = tx_datereg
self.attachment = []
self.sigs = {}
@@ -210,10 +210,13 @@ class Entry(UsawaElement):
if unitindex != None:
self.balancer = Balancer(unitindex)
+
@staticmethod
- def empty(*args, **kwargs):
- dt = datetime.datetime.utcnow()
- return Entry(-1, dt, *args, **kwargs)
+ def empty(tx_date=None, ref=None, description=None, parent=None, tx_datereg=None, unitindex=None):
+ if not tx_date:
+ tx_date = datetime.datetime.utcnow()
+ logg.debug('txdate is {}'.format(tx_date))
+ return Entry(-1, tx_date, ref=ref, description=description, parent=parent, tx_datereg=tx_datereg, unitindex=unitindex)
"""Add an entry part to the entry.
@@ -346,7 +349,7 @@ class Entry(UsawaElement):
self.serial,
self.ref,
self.dtreg.strftime('%Y%m%d%H%M%S'),
- self.dt.strftime('%Y%m%d'),
+ self.dt.strftime('%Y%m%d%H%M%S'),
self.description,
credit,
debit,
@@ -379,7 +382,7 @@ class Entry(UsawaElement):
serial = v[2]
ref = v[3].decode('utf-8')
date_reg = datetime.datetime.strptime(v[4].decode('utf-8'), '%Y%m%d%H%M%S')
- date = datetime.datetime.strptime(v[5].decode('utf-8'), '%Y%m%d')
+ date = datetime.datetime.strptime(v[5].decode('utf-8'), '%Y%m%d%H%M%S')
description = v[6].decode('utf-8')
dst_data = v[7]
src_data = v[8]
diff --git a/dummy/usawa/runnable/entry.py b/dummy/usawa/runnable/entry.py
@@ -36,7 +36,7 @@ class Context:
if args.d:
self.txdate = datetime.datetime.fromisoformat(args.d)
else:
- self.txdate = datetime.datetime.utcnow()
+ self.txdate = datetime.datetime.now(datetime.UTC)
self.attach = []
# set up ledger
@@ -77,7 +77,9 @@ class Context:
base = self.cfg.get('FSSTORE_BASE')
self.db = FsStore(base=base, dbname='usawa')
self.store = LedgerStore(self.db, self.ledger)
- self.wallet = self.store.get_key(DemoWallet, passphrase=self.cfg.get('WALLET_KEY_PASSPHRASE'))
+ ops = int(self.cfg.get('WALLET_OPSLIMIT', 0))
+ mem = int(self.cfg.get('WALLET_MEMLIMIT', 0))
+ self.wallet = self.store.get_key(DemoWallet, passphrase=self.cfg.get('WALLET_KEY_PASSPHRASE'), opslimit=ops, memlimit=mem)
self.ledger.set_wallet(self.wallet)
if args.e:
self.entry = self.store.get_draft(self.entry)
@@ -145,6 +147,10 @@ class Context:
raise ValueError('invalid ref')
+ def parse_txdate(self, v):
+ return datetime.date.fromisoformat(v)
+
+
argp = argparse.ArgumentParser()
argp.add_argument('-e', type=str, help='unique reference of entry')
argp.add_argument('-x', type=str, action='append', default=[], help='unique reference of attachment')
@@ -184,6 +190,11 @@ def input_or_default(prompt, default=None, postfix=': ', validate_fn=None):
def do_interactive_one(ctx):
ctx.description = input_or_default('Entry description', ctx.description)
ctx.ref = input_or_default('External ref', ctx.ref)
+ dt = datetime.datetime.utcnow()
+ dt = input_or_default('Transaction date(time)', ctx.txdate)
+ if isinstance(dt, str):
+ dt = ctx.parse_txdate(dt)
+ ctx.txdate = dt
def do_interactive_two(ctx, entry):
@@ -233,13 +244,13 @@ def enter_part(ctx, entry):
return True
-
entry = None
if ctx.state == 0:
do_interactive_one(ctx)
- entry = Entry.empty(ref=ctx.ref, unitindex=ctx.uidx)
+ entry = Entry.empty(ref=ctx.ref, unitindex=ctx.uidx, tx_date=ctx.txdate)
entry = ctx.store.get_draft(entry)
entry.description = ctx.description
+ entry.dt = ctx.txdate
do_interactive_two(ctx, entry)
else:
entry = ctx.entry