diff roundup/cgi/templating.py @ 2956:4511fd6c5dbf

format parameter for DateHTMLProperty.field() (based on patch [SF#1072834])
author Alexander Smishlajev <a1s@users.sourceforge.net>
date Thu, 25 Nov 2004 10:31:00 +0000
parents 6d6fdd1daf92
children fa5410ae581d
line wrap: on
line diff
--- a/roundup/cgi/templating.py	Wed Nov 24 07:11:40 2004 +0000
+++ b/roundup/cgi/templating.py	Thu Nov 25 10:31:00 2004 +0000
@@ -1329,6 +1329,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,
@@ -1374,12 +1377,19 @@
         return DateHTMLProperty(self._client, self._classname, self._nodeid,
             self._prop, self._formname, ret)
 
-    def field(self, size=30, default=None):
-        ''' Render a form edit field for the property
+    def field(self, size=30, default=None, 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:
             if default is None:
@@ -1401,16 +1411,18 @@
         if raw_value is None:
             value = ''
         elif type(raw_value) is type(''):
-            value = raw_value
+            if format is self._marker:
+                value = raw_value
+            else:
+                value = date.Date(raw_value).pretty(format)
         else:
             tz = self._db.getUserTimezone()
-            value = cgi.escape(str(raw_value.local(tz)))
+            value = raw_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.
@@ -1428,7 +1440,6 @@
             return interval.pretty()
         return str(interval)
 
-    _marker = []
     def pretty(self, format=_marker):
         ''' Render the date in a pretty format (eg. month names, spaces).
 
@@ -1439,7 +1450,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/