changeset 2955:6d3e2848e0ba maint-0.7

format parameter for DateHTMLProperty.field() (based on patch [SF#1072834])
author Alexander Smishlajev <a1s@users.sourceforge.net>
date Thu, 25 Nov 2004 10:21:11 +0000
parents 448cc54ffa1d
children 4129ecd31eea
files CHANGES.txt roundup/cgi/templating.py
diffstat 2 files changed, 27 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES.txt	Tue Nov 23 23:56:08 2004 +0000
+++ b/CHANGES.txt	Thu Nov 25 10:21:11 2004 +0000
@@ -24,6 +24,8 @@
 - make hyperdb value parsing errors readable in mailgw errors
 - make anydbm journal export handle removed properties
 
+Feature:
+- DateHTMLProperty.field() accepts format string (thanks Wil Cooley)
 
 2004-10-15 0.7.8
 Fixed:
--- a/roundup/cgi/templating.py	Tue Nov 23 23:56:08 2004 +0000
+++ b/roundup/cgi/templating.py	Thu Nov 25 10:21:11 2004 +0000
@@ -1280,6 +1280,9 @@
         return s
 
 class DateHTMLProperty(HTMLProperty):
+
+    _marker = []
+
     def __init__(self, client, classname, nodeid, prop, name, value,
             anonymous=0, offset=None):
         HTMLProperty.__init__(self, client, classname, nodeid, prop, name,
@@ -1310,26 +1313,35 @@
         return DateHTMLProperty(self._client, self._classname, self._nodeid,
             self._prop, self._formname, date.Date('.'))
 
-    def field(self, size=30):
-        ''' Render a form edit field for the property
+    def field(self, size=30, format=_marker):
+        '''Render a form edit field for the property
 
-            If not editable, just display the value via plain().
+        If not editable, just display the value via plain().
+
+        The format string is a standard python strftime format string.
         '''
         self.view_check()
+        if not self.is_edit_ok():
+            if format is self._marker:
+                return self.plain()
+            else:
+                return self.pretty(format)
 
         if self._value is None:
             value = ''
         elif type(self._value) is type(''):
-            value = self._value
+            if format is self._marker:
+                value = self._value
+            else:
+                value = date.Date(self._value).pretty(format)
         else:
             tz = self._db.getUserTimezone()
-            value = cgi.escape(str(self._value.local(tz)))
+            value = self._value.local(tz)
+            if format is not self._marker:
+                value = value.pretty(format)
 
-        if self.is_edit_ok():
-            value = '&quot;'.join(value.split('"'))
-            return self.input(name=self._formname,value=value,size=size)
-
-        return self.plain()
+        value = cgi.escape(str(value), True)
+        return self.input(name=self._formname, value=value, size=size)
 
     def reldate(self, pretty=1):
         ''' Render the interval between the date and now.
@@ -1347,7 +1359,6 @@
             return interval.pretty()
         return str(interval)
 
-    _marker = []
     def pretty(self, format=_marker):
         ''' Render the date in a pretty format (eg. month names, spaces).
 
@@ -1358,7 +1369,9 @@
         '''
         self.view_check()
 
-        if format is not self._marker:
+        if not self._value:
+            return ''
+        elif format is not self._marker:
             return self._value.pretty(format)
         else:
             return self._value.pretty()

Roundup Issue Tracker: http://roundup-tracker.org/