Mercurial > p > roundup > code
changeset 2955:6d3e2848e0ba maint-0.7
format parameter for DateHTMLProperty.field()
(based on patch [SF#1072834])
| author | Alexander Smishlajev <a1s@users.sourceforge.net> |
|---|---|
| date | Thu, 25 Nov 2004 10:21:11 +0000 |
| parents | 448cc54ffa1d |
| children | 4129ecd31eea |
| files | CHANGES.txt roundup/cgi/templating.py |
| diffstat | 2 files changed, 27 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES.txt Tue Nov 23 23:56:08 2004 +0000 +++ b/CHANGES.txt Thu Nov 25 10:21:11 2004 +0000 @@ -24,6 +24,8 @@ - make hyperdb value parsing errors readable in mailgw errors - make anydbm journal export handle removed properties +Feature: +- DateHTMLProperty.field() accepts format string (thanks Wil Cooley) 2004-10-15 0.7.8 Fixed:
--- a/roundup/cgi/templating.py Tue Nov 23 23:56:08 2004 +0000 +++ b/roundup/cgi/templating.py Thu Nov 25 10:21:11 2004 +0000 @@ -1280,6 +1280,9 @@ return s class DateHTMLProperty(HTMLProperty): + + _marker = [] + def __init__(self, client, classname, nodeid, prop, name, value, anonymous=0, offset=None): HTMLProperty.__init__(self, client, classname, nodeid, prop, name, @@ -1310,26 +1313,35 @@ return DateHTMLProperty(self._client, self._classname, self._nodeid, self._prop, self._formname, date.Date('.')) - def field(self, size=30): - ''' Render a form edit field for the property + def field(self, size=30, format=_marker): + '''Render a form edit field for the property - If not editable, just display the value via plain(). + If not editable, just display the value via plain(). + + The format string is a standard python strftime format string. ''' self.view_check() + if not self.is_edit_ok(): + if format is self._marker: + return self.plain() + else: + return self.pretty(format) if self._value is None: value = '' elif type(self._value) is type(''): - value = self._value + if format is self._marker: + value = self._value + else: + value = date.Date(self._value).pretty(format) else: tz = self._db.getUserTimezone() - value = cgi.escape(str(self._value.local(tz))) + value = self._value.local(tz) + if format is not self._marker: + value = value.pretty(format) - if self.is_edit_ok(): - value = '"'.join(value.split('"')) - return self.input(name=self._formname,value=value,size=size) - - return self.plain() + value = cgi.escape(str(value), True) + return self.input(name=self._formname, value=value, size=size) def reldate(self, pretty=1): ''' Render the interval between the date and now. @@ -1347,7 +1359,6 @@ return interval.pretty() return str(interval) - _marker = [] def pretty(self, format=_marker): ''' Render the date in a pretty format (eg. month names, spaces). @@ -1358,7 +1369,9 @@ ''' self.view_check() - if format is not self._marker: + if not self._value: + return '' + elif format is not self._marker: return self._value.pretty(format) else: return self._value.pretty()
