commit 352de9e744b03f9795eb1945c4a7fefc1c140896
parent 355a2e1ce20918f522be69e3078d66fb9c754a9a
Author: lash <dev@holbrook.no>
Date: Sat, 6 Dec 2025 19:26:28 +0000
Enforce serial limit in ledger xml
Diffstat:
4 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/dummy/empty.xml b/dummy/empty.xml
@@ -17,7 +17,7 @@
<resolver algo="sha256" proto="https">g33k.holbrook.no</resolver>
<identity keyid="f1d2d2f924e986ac86fdf7b36c94bcdf32beec15" didtype="web">nondominium.org/lash/</identity>
<identity keyid="f1d2d2f924e986ac86fdf7b36c94bcdf32beec15" didtype="web">holbrook.no</identity>
- <incoming serial="231">
+ <incoming serial="0">
<real unit="BTC">
<asset>6323141</asset>
<liability>0</liability>
diff --git a/dummy/svcontas/entry.py b/dummy/svcontas/entry.py
@@ -97,11 +97,14 @@ class Entry:
@staticmethod
- def from_tree(tree, unitindex):
+ def from_tree(tree, unitindex, min=0):
o = tree.find('data', namespaces=nsmap())
+ serial = int(o.find('serial', namespaces=nsmap()).text)
+ if min > serial:
+ raise ValueError('entry serial preceeds ledger')
unit = o.find('unit', namespaces=nsmap()).text
unitindex.sym(unit)
- serial = int(o.find('serial', namespaces=nsmap()).text)
+
ref = o.find('ref', namespaces=nsmap()).text
parent = o.find('parent', namespaces=nsmap()).text
description = o.find('description', namespaces=nsmap())
diff --git a/dummy/svcontas/ledger.py b/dummy/svcontas/ledger.py
@@ -269,7 +269,7 @@ class Ledger:
last = 0
for v in tree.iter(NSPREFIX + 'entry'):
logg.debug('processing entry {}'.format(v))
- o = Entry.from_tree(v, self.uidx)
+ o = Entry.from_tree(v, self.uidx, min=self.serial)
self.add_entry(o, modify_tree=False)
if o.serial > last:
last = o.serial
diff --git a/dummy/tests/test.xml b/dummy/tests/test.xml
@@ -16,7 +16,7 @@
<resolver algo="sha256" proto="https">g33k.holbrook.no</resolver>
<identity keyid="f1d2d2f924e986ac86fdf7b36c94bcdf32beec15" didtype="web">nondominium.org/lash/</identity>
<identity keyid="f1d2d2f924e986ac86fdf7b36c94bcdf32beec15" didtype="web">holbrook.no</identity>
- <incoming serial="231">
+ <incoming serial="0">
<real unit="BTC">
<asset>6323141</asset>
<liability>0</liability>
@@ -38,4 +38,4 @@
<sig type="ed25519" keyid="566c38287d3f31c7e50836cae58e426c6bccc52d">117a57c72ed210b91469307a1c2e73fe2d5ee306cd8ccf1a9db4ecb15d38ecbbfc97d62fec4ab8aadb08c531f2d1ede34cb6e4d3987bcba63322a0767e532e13</sig>
</incoming>
-<entry><src type="income"><account>Miscellaneous</account><amount>12300</amount></src><dst type="asset"><account>Miscellaneous</account><amount>12300</amount></dst><data><parent>b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944cb5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c</parent><ref>ae559408-7663-4289-ba95-e861751c05a7</ref><serial>1</serial><unit>USD</unit><date>2025-12-06</date><dateTimeRegistered>2025-12-06T19:18:46Z</dateTimeRegistered></data><sig type="ed25519" keyid="34d26579dbb456693e540672cf922f52dde0d6532e35bf06be013a7c532f20e0">5e9e43c246e7a34aa47c54844d044111b940addde3cf952a2d622c92641307ee4e859e301ebe80dea3e3bc59cce633fa4fed80fd2dcf9c54b05b01dfdd0fae0d</sig></entry></ledger>
+<entry><src type="income"><account>Miscellaneous</account><amount>12300</amount></src><dst type="asset"><account>Miscellaneous</account><amount>12300</amount></dst><data><parent>b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944cb5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c</parent><ref>4052f317-a4e5-4ce3-9f6d-cb691a8cf4c7</ref><serial>1</serial><unit>USD</unit><date>2025-12-06</date><dateTimeRegistered>2025-12-06T19:26:06Z</dateTimeRegistered></data><sig type="ed25519" keyid="34d26579dbb456693e540672cf922f52dde0d6532e35bf06be013a7c532f20e0">5c35d6f01428e383e798ec218f07541c97c6f23c195422641e7ad36020678a76e0cec13ef8301c3a3cc0aac7ee72e96b3ebb2c19fb1c8a9bc318b8e5acaabf0a</sig></entry></ledger>