From dc5e1fa251868d91ae58ce13aa440baa7f3f1d6b Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 15 May 2025 18:07:46 +0200 Subject: [PATCH] fix conversion of decimal field to float: use german locale if appropriate --- cybertools/composer/schema/field.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cybertools/composer/schema/field.py b/cybertools/composer/schema/field.py index bffcf63..dddb6a9 100644 --- a/cybertools/composer/schema/field.py +++ b/cybertools/composer/schema/field.py @@ -4,6 +4,7 @@ """ from datetime import datetime +import locale from logging import getLogger from time import strptime, strftime from zope.browser.interfaces import ITerms @@ -283,6 +284,11 @@ class DecimalFieldInstance(NumberFieldInstance): def unmarshall(self, value): if not value: return None + view = self.clientInstance.view + langInfo = view and getattr(view, 'languageInfo', None) or None + if langInfo and langInfo.language == 'de': + locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8') + return locale.atof(value) if ',' in value: value = value.replace(',', '.') return float(value)