@@ -1280,6 +1280,9 @@ def field(self):
12801280 return s
12811281
12821282class DateHTMLProperty (HTMLProperty ):
1283+
1284+ _marker = []
1285+
12831286 def __init__ (self , client , classname , nodeid , prop , name , value ,
12841287 anonymous = 0 , offset = None ):
12851288 HTMLProperty .__init__ (self , client , classname , nodeid , prop , name ,
@@ -1310,26 +1313,35 @@ def now(self):
13101313 return DateHTMLProperty (self ._client , self ._classname , self ._nodeid ,
13111314 self ._prop , self ._formname , date .Date ('.' ))
13121315
1313- def field (self , size = 30 ):
1314- ''' Render a form edit field for the property
1316+ def field (self , size = 30 , format = _marker ):
1317+ '''Render a form edit field for the property
13151318
1316- If not editable, just display the value via plain().
1319+ If not editable, just display the value via plain().
1320+
1321+ The format string is a standard python strftime format string.
13171322 '''
13181323 self .view_check ()
1324+ if not self .is_edit_ok ():
1325+ if format is self ._marker :
1326+ return self .plain ()
1327+ else :
1328+ return self .pretty (format )
13191329
13201330 if self ._value is None :
13211331 value = ''
13221332 elif type (self ._value ) is type ('' ):
1323- value = self ._value
1333+ if format is self ._marker :
1334+ value = self ._value
1335+ else :
1336+ value = date .Date (self ._value ).pretty (format )
13241337 else :
13251338 tz = self ._db .getUserTimezone ()
1326- value = cgi .escape (str (self ._value .local (tz )))
1339+ value = self ._value .local (tz )
1340+ if format is not self ._marker :
1341+ value = value .pretty (format )
13271342
1328- if self .is_edit_ok ():
1329- value = '"' .join (value .split ('"' ))
1330- return self .input (name = self ._formname ,value = value ,size = size )
1331-
1332- return self .plain ()
1343+ value = cgi .escape (str (value ), True )
1344+ return self .input (name = self ._formname , value = value , size = size )
13331345
13341346 def reldate (self , pretty = 1 ):
13351347 ''' Render the interval between the date and now.
@@ -1347,7 +1359,6 @@ def reldate(self, pretty=1):
13471359 return interval .pretty ()
13481360 return str (interval )
13491361
1350- _marker = []
13511362 def pretty (self , format = _marker ):
13521363 ''' Render the date in a pretty format (eg. month names, spaces).
13531364
@@ -1358,7 +1369,9 @@ def pretty(self, format=_marker):
13581369 '''
13591370 self .view_check ()
13601371
1361- if format is not self ._marker :
1372+ if not self ._value :
1373+ return ''
1374+ elif format is not self ._marker :
13621375 return self ._value .pretty (format )
13631376 else :
13641377 return self ._value .pretty ()
0 commit comments