@@ -1399,29 +1399,59 @@ def plain(self):
13991399 offset = self ._offset
14001400 return str (self ._value .local (offset ))
14011401
1402- def now (self ):
1402+ def now (self , str_interval = None ):
14031403 ''' Return the current time.
14041404
14051405 This is useful for defaulting a new value. Returns a
14061406 DateHTMLProperty.
14071407 '''
14081408 self .view_check ()
14091409
1410+ ret = date .Date ('.' )
1411+
1412+ if isinstance (str_interval , basestring ):
1413+ sign = 1
1414+ if str_interval [0 ] == '-' :
1415+ sign = - 1
1416+ str_interval = str_interval [1 :]
1417+ interval = date .Interval (str_interval )
1418+ if sign > 0 :
1419+ ret = ret + interval
1420+ else :
1421+ ret = ret - interval
1422+
14101423 return DateHTMLProperty (self ._client , self ._classname , self ._nodeid ,
1411- self ._prop , self ._formname , date . Date ( '.' ) )
1424+ self ._prop , self ._formname , ret )
14121425
1413- def field (self , size = 30 ):
1426+ def field (self , size = 30 , default = None ):
14141427 ''' Render a form edit field for the property
14151428
14161429 If not editable, just display the value via plain().
14171430 '''
14181431 self .view_check ()
14191432
14201433 if self ._value is None :
1434+ if default is None :
1435+ raw_value = None
1436+ else :
1437+ if isinstance (default , basestring ):
1438+ raw_value = Date (default )
1439+ elif isinstance (default , date .Date ):
1440+ raw_value = default
1441+ elif isinstance (default , DateHTMLProperty ):
1442+ raw_value = default ._value
1443+ else :
1444+ raise ValueError , _ ('default value for ' + \
1445+ 'DateHTMLProperty must be either DateHTMLProperty ' + \
1446+ 'or string date representation.' )
1447+ else :
1448+ raw_value = self ._value
1449+
1450+ if raw_value is None :
14211451 value = ''
14221452 else :
14231453 tz = self ._db .getUserTimezone ()
1424- value = cgi .escape (str (self . _value .local (tz )))
1454+ value = cgi .escape (str (raw_value .local (tz )))
14251455
14261456 if self .is_edit_ok ():
14271457 value = '"' .join (value .split ('"' ))
0 commit comments