diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-02 20:31:14 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-02 20:31:14 +0100 |
commit | b043008b7ec72898e30b00ab729b77cb5c868c6f (patch) | |
tree | dde4b1bb15f8bf25ebd5092a4c9cab7b87ad5cbc /ishtar_common/ooo_replace.py | |
parent | 48c7db9123ff315468f13aca39f5041ddf1d95b9 (diff) | |
download | Ishtar-b043008b7ec72898e30b00ab729b77cb5c868c6f.tar.bz2 Ishtar-b043008b7ec72898e30b00ab729b77cb5c868c6f.zip |
i18n on document template
Diffstat (limited to 'ishtar_common/ooo_replace.py')
-rw-r--r-- | ishtar_common/ooo_replace.py | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/ishtar_common/ooo_replace.py b/ishtar_common/ooo_replace.py index 63b983b7b..2158bb473 100644 --- a/ishtar_common/ooo_replace.py +++ b/ishtar_common/ooo_replace.py @@ -17,26 +17,28 @@ # See the file COPYING for details. - +import locale from zipfile import ZipFile, ZIP_DEFLATED from cStringIO import StringIO from xml.etree.cElementTree import ElementTree, fromstring +from django.conf import settings + OOO_NS = "{urn:oasis:names:tc:opendocument:xmlns:text:1.0}" -def _set_value_from_formula(value, context): +def _set_value_from_formula(value, context, default_value): value = value.strip() if value.startswith("ooow:") and len(value) >= 5: value = value[5:] if value.startswith('"') and value.endswith('"') and len(value) > 1: value = value[1:-1] elif value in context: - value = unicode(context[value]) + value = _format_value(context[value], default_value) else: value = None return value -def _parse_condition(condition, context): +def _parse_condition(condition, context, default_value): # parse only == and != operator operator = "" if "!=" in condition: @@ -46,17 +48,23 @@ def _parse_condition(condition, context): else: return var1, var2 = condition.split(operator) - var1 = _set_value_from_formula(var1, context) - var2 = _set_value_from_formula(var2, context) + var1 = _set_value_from_formula(var1, context, default_value) + var2 = _set_value_from_formula(var2, context, default_value) res = var1 == var2 if operator == '!=': res = not res return res def _format_value(value, default_value): + if hasattr(value, 'strftime'): + c_locale = settings.LANGUAGE_CODE.split('-') + if len(c_locale) == 2: + c_locale[1] = c_locale[1].upper() + c_locale = "_".join(c_locale) + if locale.getlocale()[0] != c_locale: + locale.setlocale(locale.LC_ALL, c_locale) + value = value.strftime('%x') value = unicode(value) if value else default_value - #if hasattr(value, 'strftime'): - # value = value.strftime() return value def ooo_replace(infile, outfile, context, default_value=''): @@ -76,7 +84,8 @@ def ooo_replace(infile, outfile, context, default_value=''): missing_keys.add(name) for p in content.findall(".//"+OOO_NS+"conditional-text"): condition = p.get(OOO_NS+"condition") - res = 'true' if _parse_condition(condition, context) else 'false' + res = 'true' if _parse_condition(condition, context, default_value) \ + else 'false' value = p.get(OOO_NS+'string-value-if-' + res) value = _format_value(value, default_value) if value.strip() in context: |