summaryrefslogtreecommitdiff
path: root/ishtar_common/ooo_replace.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/ooo_replace.py')
-rw-r--r--ishtar_common/ooo_replace.py32
1 files changed, 23 insertions, 9 deletions
diff --git a/ishtar_common/ooo_replace.py b/ishtar_common/ooo_replace.py
index 63b983b7b..d929d9359 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,28 @@ 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)
+ if settings.DATE_FORMAT:
+ value = unicode(value.strftime(settings.DATE_FORMAT).decode(
+ locale.getlocale()[1]).lower())
+ else:
+ value = unicode(value.strftime('%x').decode(
+ locale.getlocale()[1]))
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 +89,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: