Skip to content

Commit 39562e8

Browse files
author
Alexander Smishlajev
committed
format parameter for DateHTMLProperty.field() (based on patch [SF#1072834])
1 parent 01811f6 commit 39562e8

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

roundup/cgi/templating.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1329,6 +1329,9 @@ def field(self):
13291329
return s
13301330

13311331
class 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

Comments
 (0)