usawa

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

commit 9ba4802d2d22d70af6c6bed7b17c133b64446b4e
parent 2a344b0820949f98d49375a6c3d9e6affd586b65
Author: lash <dev@holbrook.no>
Date:   Sat, 28 Mar 2026 20:11:48 -0600

Delete and lock indexed entries on add ledger entry

Diffstat:
Mdummy/usawa/entry.py | 2+-
Mdummy/usawa/store.py | 6++++++
2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/dummy/usawa/entry.py b/dummy/usawa/entry.py @@ -83,7 +83,7 @@ class EntryPart: if self.isdebit: tag = 'debit' - tree = lxml.etree.Element(tag, type=self.typ, nsmap=nsmap()) + tree = lxml.etree.Element(tag, type=self.typ.lower(), nsmap=nsmap()) o = lxml.etree.Element('unit') o.text = self.unit diff --git a/dummy/usawa/store.py b/dummy/usawa/store.py @@ -83,6 +83,7 @@ def pfx_entry(ledger, entry): raise ValueError('invalid ledger') return PFX_LEDGER + ledger.topic + serial.to_bytes(8, byteorder='big') + """DB key prefix for adding a WIP entry object. :param entry: Entry draft object to add to store. @@ -212,8 +213,11 @@ class KeyStore(BaseStore): class EntryStore(BaseStore): + # TODO: this will overwrite the draft when the entry has a serial, but on check is being performed that the ledger entry was actually added. def put_draft(self, entry): k = pfx_entry_draft(entry) + if entry.serial > -1: + return self.db.put(k, b'\x00', exist_ok=True) v = entry.serialize() self.db.put(k, v, exist_ok=True) @@ -221,6 +225,8 @@ class EntryStore(BaseStore): def get_draft(self, entry): k = pfx_entry_draft(entry) v = self.db.get(k) + if len(v) == 1: + return None entry = Entry.deserialize(v) # TODO: hacky! i = 0