add date field with locale-dependent output formatting

This commit is contained in:
Helmut Merz 2012-02-08 11:49:46 +01:00
parent d3ac5bc8bc
commit 4db06cd046

View file

@ -20,6 +20,8 @@
Field definitions for reports. Field definitions for reports.
""" """
from zope.i18n.locales import locales
from cybertools.composer.report.field import Field from cybertools.composer.report.field import Field
from cybertools.composer.report.result import ResultSet from cybertools.composer.report.result import ResultSet
from loops.common import baseObject from loops.common import baseObject
@ -36,6 +38,24 @@ class TextField(Field):
return row.parent.context.view.renderText(value, self.format) return row.parent.context.view.renderText(value, self.format)
class DateField(Field):
format = ('date', 'short')
def getDisplayValue(self, row):
value = self.getRawValue(row)
if not value:
return u''
nv = row.parent.context.view.nodeView
langInfo = nv and getattr(nv, 'languageInfo', None) or None
if langInfo:
locale = locales.getLocale(langInfo.language)
fmt = locale.dates.getFormatter(*self.format)
return fmt.format(value)
else:
return value.isoformat()[:10]
class UrlField(Field): class UrlField(Field):
renderer = 'target' renderer = 'target'