Mercurial > p > roundup > code
diff roundup/cgi/templating.py @ 2956:4511fd6c5dbf
format parameter for DateHTMLProperty.field() (based on patch [SF#1072834])
| author | Alexander Smishlajev <a1s@users.sourceforge.net> |
|---|---|
| date | Thu, 25 Nov 2004 10:31:00 +0000 |
| parents | 6d6fdd1daf92 |
| children | fa5410ae581d |
line wrap: on
line diff
--- a/roundup/cgi/templating.py Wed Nov 24 07:11:40 2004 +0000 +++ b/roundup/cgi/templating.py Thu Nov 25 10:31:00 2004 +0000 @@ -1329,6 +1329,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, @@ -1374,12 +1377,19 @@ return DateHTMLProperty(self._client, self._classname, self._nodeid, self._prop, self._formname, ret) - def field(self, size=30, default=None): - ''' Render a form edit field for the property + def field(self, size=30, default=None, 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: if default is None: @@ -1401,16 +1411,18 @@ if raw_value is None: value = '' elif type(raw_value) is type(''): - value = raw_value + if format is self._marker: + value = raw_value + else: + value = date.Date(raw_value).pretty(format) else: tz = self._db.getUserTimezone() - value = cgi.escape(str(raw_value.local(tz))) + value = raw_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. @@ -1428,7 +1440,6 @@ return interval.pretty() return str(interval) - _marker = [] def pretty(self, format=_marker): ''' Render the date in a pretty format (eg. month names, spaces). @@ -1439,7 +1450,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()
