]> git.ipfire.org Git - thirdparty/python-drafthorse.git/commitdiff
Fix string handling of DecimalElement (#95)
authorheeplr <32984777+heeplr@users.noreply.github.com>
Thu, 27 Nov 2025 19:52:54 +0000 (20:52 +0100)
committerGitHub <noreply@github.com>
Thu, 27 Nov 2025 19:52:54 +0000 (20:52 +0100)
* remove __str__() to ensure string type by falling back to inherited StringElement.__str__()
* wrap __format__ method of _value
* enforce Decimal() type in __init__

Co-authored-by: Daniel Hiepler <d-git@coderdu.de>
drafthorse/models/elements.py

index 2d763b73267d3bdd44ad0a46800b3ea71f6a0f18..31a0e3db7ead81f2eaff686a28889c47959fe1e4 100644 (file)
@@ -158,15 +158,15 @@ class StringElement(Element):
 class DecimalElement(StringElement):
     def __init__(self, namespace, tag, value=None):
         super().__init__(namespace, tag)
-        self._value = value
+        self._value = None if value is None else Decimal(value)
 
     def to_etree(self):
         node = self._etree_node()
         node.text = str(self._value) if self._value is not None else ""
         return node
 
-    def __str__(self):
-        return self._value
+    def __format__(self, fmt):
+        return self._value.__format__(fmt)
 
     def from_etree(self, root, strict=True):
         self._value = Decimal(root.text)