@@ -1329,6 +1329,9 @@ def field(self):
13291329 return s
13301330
13311331class DateHTMLProperty (HTMLProperty ):
1332+
1333+ _marker = []
1334+
13321335 def __init__ (self , client , classname , nodeid , prop , name , value ,
13331336 anonymous = 0 , offset = None ):
13341337 HTMLProperty .__init__ (self , client , classname , nodeid , prop , name ,
@@ -1374,12 +1377,19 @@ def now(self, str_interval=None):
13741377 return DateHTMLProperty (self ._client , self ._classname , self ._nodeid ,
13751378 self ._prop , self ._formname , ret )
13761379
1377- def field (self , size = 30 , default = None ):
1378- ''' Render a form edit field for the property
1380+ def field (self , size = 30 , default = None , format = _marker ):
1381+ '''Render a form edit field for the property
13791382
1380- If not editable, just display the value via plain().
1383+ If not editable, just display the value via plain().
1384+
1385+ The format string is a standard python strftime format string.
13811386 '''
13821387 self .view_check ()
1388+ if not self .is_edit_ok ():
1389+ if format is self ._marker :
1390+ return self .plain ()
1391+ else :
1392+ return self .pretty (format )
13831393
13841394 if self ._value is None :
13851395 if default is None :
@@ -1401,16 +1411,18 @@ def field(self, size=30, default=None):
14011411 if raw_value is None :
14021412 value = ''
14031413 elif type (raw_value ) is type ('' ):
1404- value = raw_value
1414+ if format is self ._marker :
1415+ value = raw_value
1416+ else :
1417+ value = date .Date (raw_value ).pretty (format )
14051418 else :
14061419 tz = self ._db .getUserTimezone ()
1407- value = cgi .escape (str (raw_value .local (tz )))
1420+ value = raw_value .local (tz )
1421+ if format is not self ._marker :
1422+ value = value .pretty (format )
14081423
1409- if self .is_edit_ok ():
1410- value = '"' .join (value .split ('"' ))
1411- return self .input (name = self ._formname ,value = value ,size = size )
1412-
1413- return self .plain ()
1424+ value = cgi .escape (str (value ), True )
1425+ return self .input (name = self ._formname , value = value , size = size )
14141426
14151427 def reldate (self , pretty = 1 ):
14161428 ''' Render the interval between the date and now.
@@ -1428,7 +1440,6 @@ def reldate(self, pretty=1):
14281440 return interval .pretty ()
14291441 return str (interval )
14301442
1431- _marker = []
14321443 def pretty (self , format = _marker ):
14331444 ''' Render the date in a pretty format (eg. month names, spaces).
14341445
@@ -1439,7 +1450,9 @@ def pretty(self, format=_marker):
14391450 '''
14401451 self .view_check ()
14411452
1442- if format is not self ._marker :
1453+ if not self ._value :
1454+ return ''
1455+ elif format is not self ._marker :
14431456 return self ._value .pretty (format )
14441457 else :
14451458 return self ._value .pretty ()
0 commit comments