diff options
Diffstat (limited to 'ishtar_common/utils_secretary.py')
-rw-r--r-- | ishtar_common/utils_secretary.py | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py index e4e6e8e0b..318f50bdc 100644 --- a/ishtar_common/utils_secretary.py +++ b/ishtar_common/utils_secretary.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- from secretary import Renderer from lxml import etree @@ -7,10 +7,12 @@ from xml.parsers.expat import ExpatError, ErrorString from datetime import datetime import locale +from num2words import num2words from PIL import Image import re from django.conf import settings +from django.utils import formats RE_UNITS = re.compile("([.0-9]+)([a-z]+)") @@ -25,6 +27,28 @@ def parse_value_unit(value): return value, unit +def float_format(value): + if value is None or value == "": + return "" + try: + value = float(value) + except ValueError: + return "" + if int(value) == value: + return int(value) + return formats.localize(value, use_l10n=True) + + +def number_to_words(value): + if value is None or value == "": + return "" + try: + value = float(value) + except ValueError: + return "" + return num2words(value, lang=settings.LANGUAGE_CODE.split("-")[0]) + + def replace_line_breaks(value): return (value or "").replace("\r\n", "\n") @@ -60,7 +84,7 @@ def capitalize_filter(value): def human_date_filter(value): try: value = datetime.strptime(value, "%Y-%m-%d") - except ValueError: + except (ValueError, TypeError) as __: return "" language_code = settings.LANGUAGE_CODE.split("-") language_code = language_code[0] + "_" + language_code[1].upper() @@ -109,6 +133,8 @@ class IshtarSecretaryRenderer(Renderer): self.environment.filters["capfirst"] = capfirst_filter self.environment.filters["lowerfirst"] = lowerfirst_filter self.environment.filters["capitalize"] = capitalize_filter + self.environment.filters["float_format"] = float_format + self.environment.filters["number_to_words"] = number_to_words self.environment.filters["replace_line_breaks"] = replace_line_breaks self.environment.filters["splitpart"] = splitpart |