usawa

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs | Submodules | LICENSE

commit e1818945a5bf7ed68b9d8e092fa477de9f9f4e31
parent 399a843e48fa89fcab878d6d74e4677fe2131d55
Author: lash <dev@holbrook.no>
Date:   Sat,  6 Dec 2025 12:06:52 +0000

Add deserialize

Diffstat:
Mdummy/present.xsl | 2+-
Mdummy/svcontas/entry.py | 18++++++++++++++++++
Adummy/tests/entry.py | 38++++++++++++++++++++++++++++++++++++++
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() +