Skip to content

Commit f79e6d1

Browse files
author
Alexander Smishlajev
committed
format parameter for DateHTMLProperty.field()
(based on patch [SF#1072834])
1 parent 1619ed5 commit f79e6d1

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

CHANGES.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ Fixed:
2424
- make hyperdb value parsing errors readable in mailgw errors
2525
- make anydbm journal export handle removed properties
2626

27+
Feature:
28+
- DateHTMLProperty.field() accepts format string (thanks Wil Cooley)
2729

2830
2004-10-15 0.7.8
2931
Fixed:

roundup/cgi/templating.py

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

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

Comments
 (0)