commit e1818945a5bf7ed68b9d8e092fa477de9f9f4e31
parent 399a843e48fa89fcab878d6d74e4677fe2131d55
Author: lash <dev@holbrook.no>
Date: Sat, 6 Dec 2025 12:06:52 +0000
Add deserialize
Diffstat:
3 files changed, 57 insertions(+), 1 deletion(-)
diff --git a/dummy/present.xsl b/dummy/present.xsl
@@ -12,7 +12,7 @@
</xsl:template>
<xsl:template match="/ledger">
- <p>Document retrieved: <xsl:value-of select="retrieved" /> from <xsl:value-of select="src" /></p>
+ <p>Documento recuperado: <xsl:value-of select="retrieved" /> from <xsl:value-of select="src" /></p>
<xsl:for-each select="entry">
<p><xsl:value-of select="data/serial" />:<xsl:value-of select="data/date" />:<xsl:value-of select="data/ref" /></p>
</xsl:for-each>
diff --git a/dummy/svcontas/entry.py b/dummy/svcontas/entry.py
@@ -120,6 +120,7 @@ class Entry:
self.dtreg.strftime('%Y%m%d%H%M%S'),
self.dt.strftime('%Y%m%d'),
self.unit,
+ self.description,
src,
dst,
]
@@ -127,6 +128,23 @@ class Entry:
return rencode.dumps(d)
+ @staticmethod
+ def deserialize(data):
+ v = rencode.loads(data)
+ parent = v[0]
+ serial = v[1]
+ ref = v[2]
+ date_reg = datetime.datetime.strptime(v[3].decode('utf-8'), '%Y%m%d%H%M%S')
+ date = datetime.datetime.strptime(v[4].decode('utf-8'), '%Y%m%d')
+ unit = v[5]
+ description = v[6]
+ src_data = v[7]
+ dst_data = v[8]
+ src = EntryPart(src_data[0], src_data[1], src_data[2], src=True)
+ dst = EntryPart(dst_data[0], dst_data[1], dst_data[2])
+ return Entry(src, dst, unit, serial, date, ref=ref, description=description, parent=parent, tx_datereg=date_reg)
+
+
def sum(self):
b = self.serialize()
h = hashlib.new('sha512')
diff --git a/dummy/tests/entry.py b/dummy/tests/entry.py
@@ -0,0 +1,38 @@
+import logging
+import datetime
+import unittest
+import os
+import copy
+
+from svcontas import EntryPart, Entry
+
+logging.basicConfig(level=logging.DEBUG)
+logg = logging.getLogger()
+
+testdir = os.path.realpath(os.path.dirname(__file__))
+
+class TestEntry(unittest.TestCase):
+
+ def setUp(self):
+ self.parent = bytes.fromhex('0cf9180a764aba863a67b6d72f0918bc131c6772642cb2dce5a34f0a702f9470ddc2bf125c12198b1995c233c34b4afd346c54a2334c350a948a51b6e8b4e6b6')
+ self.ref = '1bda7dfa-b8fd-400d-8b42-1d2861ad7f70'
+ self.description = "foo bar baz"
+ self.dtreg = datetime.datetime.now()
+
+
+ def test_entry_serialize(self):
+ dst = EntryPart('asset', 'foo', 1337)
+ src = EntryPart('income', 'foo', 1337, src=True)
+ o = Entry(src, dst, 'USD', 42, datetime.datetime.strptime('2025-11-11', '%Y-%m-%d'), parent=self.parent, ref=self.ref, description=self.description, tx_datereg=self.dtreg)
+ oo = copy.deepcopy(o)
+
+ s = o.serialize()
+ o = Entry.deserialize(s)
+ ss = o.serialize()
+
+ self.assertEqual(s, ss)
+
+
+if __name__ == '__main__':
+ unittest.main()
+