commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r7872 - in trunk/gnue-appserver/src: . generator


From: reinhard
Subject: [gnue] r7872 - in trunk/gnue-appserver/src: . generator
Date: Sat, 20 Aug 2005 06:42:03 -0500 (CDT)

Author: reinhard
Date: 2005-08-20 06:41:58 -0500 (Sat, 20 Aug 2005)
New Revision: 7872

Modified:
   trunk/gnue-appserver/src/geasGsdGen.py
   trunk/gnue-appserver/src/geasInstance.py
   trunk/gnue-appserver/src/generator/classdef.py
   trunk/gnue-appserver/src/generator/form.py
   trunk/gnue-appserver/src/generator/layout.py
Log:
Fixed datetime conversions and removed a few Python-2.1'isms.


Modified: trunk/gnue-appserver/src/geasGsdGen.py
===================================================================
--- trunk/gnue-appserver/src/geasGsdGen.py      2005-08-20 04:19:03 UTC (rev 
7871)
+++ trunk/gnue-appserver/src/geasGsdGen.py      2005-08-20 11:41:58 UTC (rev 
7872)
@@ -23,11 +23,9 @@
 
 import sys
 import copy
+import datetime
 import mx.DateTime
 
-if sys.version_info [:2] >= (2, 3):
-  import datetime
-
 from gnue.common.apps import i18n, errors
 from gnue.common.apps.i18n import translate as _        # for epydoc
 from gnue.common.apps.GClientApp import *
@@ -356,8 +354,7 @@
       if isinstance (native, mx.DateTime.DateTimeType):
         return native.date
 
-      elif sys.version_info [:2] >= (2, 3) and \
-          isinstance (native, datetime.date):
+      elif isinstance (native, datetime.date):
         return native.isoformat ()
 
       else:
@@ -371,12 +368,10 @@
       elif isinstance (native, mx.DateTime.DateTimeDeltaType):
         return str (native)
 
-      elif sys.version_info [:2] >= (2, 3) and \
-          isinstance (native, datetime.time):
+      elif isinstance (native, datetime.time):
         return native.isoformat ()
 
-      elif sys.version_info [:2] >= (2, 3) and \
-          isinstance (native, datetime.timedelta):
+      elif isinstance (native, datetime.timedelta):
         return "%s" % native
 
       else:
@@ -387,8 +382,7 @@
       if isinstance (native, mx.DateTime.DateTimeType):
         return str (native)
 
-      elif sys.version_info [:2] >= (2, 3) and \
-          isinstance (native, datetime.datetime):
+      elif isinstance (native, datetime.datetime):
         return native.isoformat ()
 
       else:

Modified: trunk/gnue-appserver/src/geasInstance.py
===================================================================
--- trunk/gnue-appserver/src/geasInstance.py    2005-08-20 04:19:03 UTC (rev 
7871)
+++ trunk/gnue-appserver/src/geasInstance.py    2005-08-20 11:41:58 UTC (rev 
7872)
@@ -22,16 +22,14 @@
 # $Id$
 
 import sys
+import datetime
 import mx.DateTime
-import mx.DateTime.ISO
 
-if sys.version_info [:2] >= (2, 3):
-  import datetime
-
 from gnue import appserver
 from gnue.appserver.language import Object, Session
 from gnue.common.logic.language import getLanguageAdapter
 from gnue.common.apps import errors
+from gnue.common.utils import GDateTime
 
 # =============================================================================
 # Exceptions
@@ -140,67 +138,61 @@
         raise exception (propertydef.fullName, value)
       
     elif propertydef.dbType == "date":
-      # Date property: Must be an mx.DateTime or at least parseable as such
-      if isinstance (value, unicode):
-        value = mx.DateTime.ISO.ParseDateTime (value.encode ('utf-8') + \
-                                               ' 00:00:00')
-      elif isinstance (value, str):
-        value = mx.DateTime.ISO.ParseDateTime (value + ' 00:00:00')
+      # Date property: Must be a datetime.date or at least parseable as such
+      if isinstance (value, basestring):
+        value = GDateTime.parseISO (value)
 
-      elif isinstance (value, datetime.datetime):
-        value = mx.DateTime.ISO.ParseDateTime ((value.date()).isoformat () \
-            + ' 00:00:00')
+      if isinstance (value, datetime.datetime):
+        return value.date ()
 
       elif isinstance (value, datetime.date):
-        value = mx.DateTime.ISO.ParseDateTime (value.isoformat () + ' 
00:00:00')
+        return value
 
-      if isinstance (value, mx.DateTime.DateTimeType):
-        return mx.DateTime.DateTime (value.year, value.month, value.day,
-                                     0, 0, 0)
+      elif isinstance (value, mx.DateTime.DateTimeType):
+        return datetime.date (value.year, value.month, value.day)
+
       else:
         raise exception (propertydef.fullName, value)
 
     elif propertydef.dbType == "time":
-      # Time property: Must be an mx.DateTime or at least parseable as such
-      if isinstance (value, unicode):
-        value = mx.DateTime.ISO.ParseDateTime ('0001-01-01 ' + \
-                                               value.encode ('utf-8'))
-      elif isinstance (value, str):
-        value = mx.DateTime.ISO.ParseDateTime ('0001-01-01 ' + value)
+      # Time property: Must be a datetime.time or at least parseable as such
+      if isinstance (value, basestring):
+        value = GDateTime.parseISO (value)
 
-      elif isinstance (value, datetime.datetime):
-        value = mx.DateTime.ISO.ParseDateTime ('0001-01-01 ' + \
-            (value.time ()).isoformat ())
+      if isinstance (value, datetime.datetime):
+        return value.time ()
 
       elif isinstance (value, datetime.time):
-        value = mx.DateTime.ISO.ParseDateTime ('0001-01-01 ' + \
-                                               value.isoformat ())
+        return value
+
       elif isinstance (value, datetime.timedelta):
-        value = datetime.datetime (1, 1, 1) + value
-        value = mx.DateTime.ISO.ParseDateTime (value.isoformat ())
+        return (datetime.datetime (1, 1, 1) + value).time ()
 
-      if isinstance (value, mx.DateTime.DateTimeType) or \
+      elif isinstance (value, mx.DateTime.DateTimeType) or \
          isinstance (value, mx.DateTime.DateTimeDeltaType):
-        return mx.DateTime.DateTime (1, 1, 1,
-                                     value.hour, value.minute, value.second)
+        return datetime.time (value.hour, value.minute, int (value.second),
+            int ((value.second - int (value.second)) * 1000000))
+
       else:
         raise exception (propertydef.fullName, value)
 
     elif propertydef.dbType == "datetime":
-      # Date/Time property: Must be an mx.DateTime or at least parseable as
-      # such
-      if isinstance (value, unicode):
-        return mx.DateTime.ISO.ParseDateTime (value.encode ('utf-8'))
+      # Date/Time property: Must be a datetime.datetime or at least parseable
+      # as such
+      if isinstance (value, basestring):
+        value = GDateTime.parseISO (value)
 
-      elif isinstance (value, str):
-        return mx.DateTime.ISO.ParseDateTime (value)
+      if isinstance (value, datetime.datetime):
+        return value
 
-      elif sys.version_info [:2] >= (2, 3) and \
-          isinstance (value, datetime.datetime):
-        return mx.DateTime.ISO.ParseDateTime (value.isoformat ())
+      elif isinstance (value, datetime.date):
+        return datetime.datetime (value.year, value.month, value.day)
 
-      if isinstance (value, mx.DateTime.DateTimeType):
-        return value
+      elif isinstance (value, mx.DateTime.DateTimeType):
+        return datetime.datetime (value.year, value.month, value.day,
+            value.hour, value.minute, int (value.second),
+            int ((value.second - int (value.second)) * 1000000))
+
       else:
         raise exception (propertydef.fullName, value)
 
@@ -254,8 +246,21 @@
     else:
       value = record.getField (propertydef.column)
 
-    return self.__convert (value, propertydef, DbValueError)
+    value = self.__convert (value, propertydef, DbValueError)
 
+    # FIXME: For compatibility, return mx.DateTime instead of datetime objects.
+    # Remove this for 0.5
+    if isinstance (value, datetime.datetime):
+      return mx.DateTime.DateTime (value.year, value.month, value.day,
+          value.hour, value.minute, value.second + value.microsecond / 1000000)
+    elif isinstance (value, datetime.date):
+      return mx.DateTime.DateTime (value.year, value.month, value.day, 0, 0, 0)
+    elif isinstance (value, datetime.time):
+      return mx.DateTime.DateTime (1, 1, 1, value.hour, value.minute,
+          value.second + value.microsecond / 1000000)
+    else:
+      return value
+
   # ---------------------------------------------------------------------------
   # Get the values of a list of properties
   # ---------------------------------------------------------------------------
@@ -424,7 +429,7 @@
     (datefield, userfield) = [('gnue_modifydate', 'gnue_modifyuser'),
                               ('gnue_createdate', 'gnue_createuser')][creation]
     if self.has_key (datefield):
-      self.__putValue (datefield, mx.DateTime.now (), False)
+      self.__putValue (datefield, datetime.datetime.now (), False)
 
     if self.has_key (userfield) and self.__session.user is not None:
       self.__putValue (userfield, self.__session.user, False)

Modified: trunk/gnue-appserver/src/generator/classdef.py
===================================================================
--- trunk/gnue-appserver/src/generator/classdef.py      2005-08-20 04:19:03 UTC 
(rev 7871)
+++ trunk/gnue-appserver/src/generator/classdef.py      2005-08-20 11:41:58 UTC 
(rev 7872)
@@ -21,7 +21,7 @@
 #
 # $Id$
 
-import mx
+import datetime
 
 from gnue.appserver import repository
 from gnue.common.apps import errors
@@ -404,7 +404,8 @@
       self.typecast    = 'date'
       self.inputmask   = masks [typeId]
       self.displaymask = masks [typeId]
-      self.fieldLength = len (mx.DateTime.now ().strftime (self.displaymask))
+      self.fieldLength = \
+          len ((datetime.datetime.now ()).strftime (self.displaymask))
 
     elif propDef.gnue_type == 'number':
       self.typecast = 'number'

Modified: trunk/gnue-appserver/src/generator/form.py
===================================================================
--- trunk/gnue-appserver/src/generator/form.py  2005-08-20 04:19:03 UTC (rev 
7871)
+++ trunk/gnue-appserver/src/generator/form.py  2005-08-20 11:41:58 UTC (rev 
7872)
@@ -211,24 +211,13 @@
       for item in self.__classDef.properties:
         width.append (max (len (item.label), item.widgetWidth ()))
 
-      if self.__sum (width) + len (width) - 1 <= self.__maxWidth:
+      if sum (width) + len (width) - 1 <= self.__maxWidth:
         result = layout.Tabular
 
     return result (self.__classDef, self.__maxWidth, self.__maxHeight)
 
 
   # ---------------------------------------------------------------------------
-  # Create the sum of a sequence of numbers
-  # ---------------------------------------------------------------------------
-
-  def __sum (self, *args):
-    if sys.version_info [0:2] >= (2, 3):
-      return sum (*args)
-    else:
-      return reduce (operator.add, *args)
-
-
-  # ---------------------------------------------------------------------------
   # Get an XML representation of all blocks and their fields
   # ---------------------------------------------------------------------------
 

Modified: trunk/gnue-appserver/src/generator/layout.py
===================================================================
--- trunk/gnue-appserver/src/generator/layout.py        2005-08-20 04:19:03 UTC 
(rev 7871)
+++ trunk/gnue-appserver/src/generator/layout.py        2005-08-20 11:41:58 UTC 
(rev 7872)
@@ -342,7 +342,7 @@
     result   = 0
 
     for (page, properties) in self._classdef.virtualPages:
-      need = self.__sum ([i.minHeight or self._MIN_HEIGHT for i in properties])
+      need = sum ([i.minHeight or self._MIN_HEIGHT for i in properties])
 
       # if the needed space exceeds the longest page possible, or a page
       # contains stretchable items, use the maximum available space
@@ -355,18 +355,6 @@
 
 
   # ---------------------------------------------------------------------------
-  # Create the sum of a sequence of numbers
-  # ---------------------------------------------------------------------------
-
-  def __sum (self, *args):
-
-    if sys.version_info [0:2] >= (2, 3):
-      return sum (*args)
-    else:
-      return reduce (operator.add, *args)
-
-
-  # ---------------------------------------------------------------------------
   # Get the next set of properties for a given page
   # ---------------------------------------------------------------------------
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]