commit-gnue
[Top][All Lists]
Advanced

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

gnue common/src/dbdrivers/_dbsig/DBdriver.py co...


From: Jason Cater
Subject: gnue common/src/dbdrivers/_dbsig/DBdriver.py co...
Date: Wed, 27 Feb 2002 01:24:19 -0500

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/02/27 01:24:19

Modified files:
        common/src/dbdrivers/_dbsig: DBdriver.py 
        common/src/dbdrivers/cxoracle: DBdriver.py 
        forms/src      : GFDisplayHandler.py 

Log message:
        input support for dates; enhanced backend support for dates; improved 
input support for numbers; misc cleanup

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/dbdrivers/_dbsig/DBdriver.py.diff?cvsroot=OldCVS&tr1=1.38&tr2=1.39&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/common/src/dbdrivers/cxoracle/DBdriver.py.diff?cvsroot=OldCVS&tr1=1.10&tr2=1.11&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/forms/src/GFDisplayHandler.py.diff?cvsroot=OldCVS&tr1=1.12&tr2=1.13&r1=text&r2=text

Patches:
Index: gnue/common/src/dbdrivers/_dbsig/DBdriver.py
diff -c gnue/common/src/dbdrivers/_dbsig/DBdriver.py:1.38 
gnue/common/src/dbdrivers/_dbsig/DBdriver.py:1.39
*** gnue/common/src/dbdrivers/_dbsig/DBdriver.py:1.38   Tue Feb 26 20:13:07 2002
--- gnue/common/src/dbdrivers/_dbsig/DBdriver.py        Wed Feb 27 01:24:18 2002
***************
*** 38,45 ****
  
  class DBSIG_RecordSet(GDataObjects.RecordSet):
  
!   def _escapeString(self, value):
!     return string.replace(value,"'","%s'" % 
self._parent._dataObject._escapeSingleQuote)
  
    def _postChanges(self):
      if not self.isPending(): return
--- 38,52 ----
  
  class DBSIG_RecordSet(GDataObjects.RecordSet):
  
!   def _toSqlString(self, value):
!     try:
!       return value.strftime(self._parent._dataObject._dateTimeFormat)
!     except AttributeError:
!       if value == None:
!         return "NULL"
!       else:
!         return "'%s'" % string.replace(str(value),"'",
!                     "%s'" % self._parent._dataObject._escapeSingleQuote)
  
    def _postChanges(self):
      if not self.isPending(): return
***************
*** 87,93 ****
            if self._initialData[field] == None:
              where.append ("%s IS NULL" % field)
            else:
!             where.append ("%s='%s'" % (field, 
self._escapeString(self._initialData[field])))
  
      statement = "DELETE FROM %s WHERE %s" % \
         (self._parent._dataObject.table, string.join(where,' AND ') )
--- 94,100 ----
            if self._initialData[field] == None:
              where.append ("%s IS NULL" % field)
            else:
!             where.append ("%s=%s" % (field, 
self._toSqlString(self._initialData[field])))
  
      statement = "DELETE FROM %s WHERE %s" % \
         (self._parent._dataObject.table, string.join(where,' AND ') )
***************
*** 103,109 ****
          if self._fields[field] == None or self._fields[field] == '':
            vals.append ("NULL") #  % (self._fields[field]))
          else:
!           vals.append ("'%s'" % self._escapeString(self._fields[field]))
  
      return "INSERT INTO %s (%s) VALUES (%s)" % \
         (self._parent._dataObject.table, string.join(fields,','), \
--- 110,116 ----
          if self._fields[field] == None or self._fields[field] == '':
            vals.append ("NULL") #  % (self._fields[field]))
          else:
!           vals.append (self._toSqlString(self._fields[field]))
  
      return "INSERT INTO %s (%s) VALUES (%s)" % \
         (self._parent._dataObject.table, string.join(fields,','), \
***************
*** 112,118 ****
    def _buildUpdateStatement(self):
      updates = []
      for field in self._modifiedFlags.keys():
!       updates.append ("%s='%s'" % (field, 
self._escapeString(self._fields[field])))
  
      if self._parent._dataObject._primaryIdField:
        where = [self._parent._dataObject._primaryIdFormat % \
--- 119,125 ----
    def _buildUpdateStatement(self):
      updates = []
      for field in self._modifiedFlags.keys():
!       updates.append ("%s=%s" % (field, 
self._toSqlString(self._fields[field])))
  
      if self._parent._dataObject._primaryIdField:
        where = [self._parent._dataObject._primaryIdFormat % \
***************
*** 123,129 ****
          if self._initialData[field] == None:
            where.append ("%s IS NULL" % field)
          else:
!           where.append ("%s='%s'" % (field, 
self._escapeString(self._initialData[field])))
  
      return "UPDATE %s SET %s WHERE %s" % \
         (self._parent._dataObject.table, string.join(updates,','), \
--- 130,136 ----
          if self._initialData[field] == None:
            where.append ("%s IS NULL" % field)
          else:
!           where.append ("%s=%s" % (field, 
self._toSqlString(self._initialData[field])))
  
      return "UPDATE %s SET %s WHERE %s" % \
         (self._parent._dataObject.table, string.join(updates,','), \
***************
*** 187,193 ****
         'mul':             (2, 999, '(%s)',                   '*'      ),
         'div':             (2, 999, '(%s)',                   '/'      ),
         'and':             (1, 999, '(%s)',                   ' AND '  ),
!        'or':              (2, 999, '(%s)',                   ' OR '   ), 
         'not':             (1,   1, '(NOT %s)',               None     ),
         'negate':          (1,   1, '-%s',                    None     ),
         'eq':              (2,   2, '(%s = %s)',              None     ),
--- 194,200 ----
         'mul':             (2, 999, '(%s)',                   '*'      ),
         'div':             (2, 999, '(%s)',                   '/'      ),
         'and':             (1, 999, '(%s)',                   ' AND '  ),
!        'or':              (2, 999, '(%s)',                   ' OR '   ),
         'not':             (1,   1, '(NOT %s)',               None     ),
         'negate':          (1,   1, '-%s',                    None     ),
         'eq':              (2,   2, '(%s = %s)',              None     ),
***************
*** 229,234 ****
--- 236,246 ----
      self._primaryIdChecked = 1  # Internal flag
  
  
+     # The date/time format used in insert/select statements
+     # (based on format used for time.strftime())
+     self._dateTimeFormat = "'%c'"
+ 
+ 
    # This should be over-ridden only if driver needs more than user/pass
    def getLoginFields(self):
      return [['_username', 'User Name',0],['_password', 'Password',1]]
***************
*** 334,345 ****
            return "NULL"
          elif element.type == 'number':
            return "%s" % element.value
!         else: 
!           return "'%s'" % element.value
        elif otype == 'param':
          v = element.getValue()
          return (v == None and "NULL") or ("'%s'" % element.getValue())
!       elif self.conditionElements.has_key(otype): 
          for i in range(0, len(element._children)): 
            element._children[i] = self.__conditionToSQL(element._children[i])
          if len(element._children) < self.conditionElements[otype][0]: 
--- 346,357 ----
            return "NULL"
          elif element.type == 'number':
            return "%s" % element.value
!         else:
!           return self._toSqlString(element.value)
        elif otype == 'param':
          v = element.getValue()
          return (v == None and "NULL") or ("'%s'" % element.getValue())
!       elif self.conditionElements.has_key(otype):
          for i in range(0, len(element._children)): 
            element._children[i] = self.__conditionToSQL(element._children[i])
          if len(element._children) < self.conditionElements[otype][0]: 
***************
*** 355,368 ****
          else: 
            return self.conditionElements[otype][2] % \
              (string.join(element._children, self.conditionElements[otype][3]))
!       else: 
          raise GConditions.ConditionNotSupported, \
            'Condition clause "%s" is not supported by this db driver.' % otype
  
!   # Code necessary to force the connection into transaction mode... 
    # this is usually not necessary (MySQL is one of few DBs that must force)
!   def _beginTransaction(self): 
!     pass      
  
  
  class DBSIG_DataObject_Object:
--- 367,380 ----
          else: 
            return self.conditionElements[otype][2] % \
              (string.join(element._children, self.conditionElements[otype][3]))
!       else:
          raise GConditions.ConditionNotSupported, \
            'Condition clause "%s" is not supported by this db driver.' % otype
  
!   # Code necessary to force the connection into transaction mode...
    # this is usually not necessary (MySQL is one of few DBs that must force)
!   def _beginTransaction(self):
!     pass
  
  
  class DBSIG_DataObject_Object:
***************
*** 410,419 ****
    'object': DBSIG_DataObject_Object,
    'sql':    DBSIG_DataObject_SQL
  }
- 
- 
- 
- 
  
  
  
--- 422,427 ----
Index: gnue/common/src/dbdrivers/cxoracle/DBdriver.py
diff -c gnue/common/src/dbdrivers/cxoracle/DBdriver.py:1.10 
gnue/common/src/dbdrivers/cxoracle/DBdriver.py:1.11
*** gnue/common/src/dbdrivers/cxoracle/DBdriver.py:1.10 Tue Feb 26 19:38:37 2002
--- gnue/common/src/dbdrivers/cxoracle/DBdriver.py      Wed Feb 27 01:24:18 2002
***************
*** 16,22 ****
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
! # Copyright 2000, 2001 Free Software Foundation
  #
  # FILE:
  # cxoracle/DBdriver.py
--- 16,22 ----
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
! # Copyright 2000, 2002 Free Software Foundation
  #
  # FILE:
  # cxoracle/DBdriver.py
***************
*** 64,69 ****
--- 64,73 ----
      DBSIG_DataObject.__init__(self)
      self._DatabaseError = SIG2api.DatabaseError
      self._resultSetClass = Oracle_ResultSet
+ 
+     # The date/time format used in insert/select statements
+     # (based on format used for time.strftime())
+     self._dateTimeFormat = "to_date('%Y-%m-%d %H:%M:%S','yyyy-mm-dd 
hh:mi:ss')"
  
  
    def connect(self, connectData={}):
Index: gnue/forms/src/GFDisplayHandler.py
diff -c gnue/forms/src/GFDisplayHandler.py:1.12 
gnue/forms/src/GFDisplayHandler.py:1.13
*** gnue/forms/src/GFDisplayHandler.py:1.12     Tue Feb 19 00:47:49 2002
--- gnue/forms/src/GFDisplayHandler.py  Wed Feb 27 01:24:18 2002
***************
*** 32,37 ****
--- 32,39 ----
  from gnue.common import GDebug, GConfig
  from GFEvent import *
  
+ from mx.DateTime import DateTime
+ 
  
  #############################################################################
  #
***************
*** 50,56 ****
    #
  
    def setValue(self, value):
-    ## print "Setting value"
      self.modified = 0
      self.value = value
      self._buildDisplay()
--- 52,57 ----
***************
*** 69,75 ****
  
  
    def generateRefreshEvent(self):
-    ## print "Refreshing!!"
      self.dispatchEvent(GFEvent('updateEntryEditor',
             object = self.entry,
             display=self.display,
--- 70,75 ----
***************
*** 85,102 ****
    #
  
    def beginEdit(self, event):
-    ## print "beginEdit.. %s" % self.display
      self.editing = 1
      self.modified = 0
  
      # TODO: Replace with formatter
      self.setValue(self.entry.getValue())
!     if self.value == None:
!       self.work = ""
!     else:
!       self.work = str(self.value)
! 
      self._buildDisplay()
      self.cursor = len(self.display)
  
  
--- 85,98 ----
    #
  
    def beginEdit(self, event):
      self.editing = 1
      self.modified = 0
  
      # TODO: Replace with formatter
      self.setValue(self.entry.getValue())
!     self.work = self._buildDisplayHelper(self.value, 1)
      self._buildDisplay()
+ 
      self.cursor = len(self.display)
  
  
***************
*** 128,134 ****
        else:
          event.__error__ = 1
          event.__errortext__ = "The entered value\n " \
!                             + " '%s'\n" % self.value \
                              + "is not a valid entry."
  
  
--- 124,130 ----
        else:
          event.__error__ = 1
          event.__errortext__ = "The entered value\n " \
!                             + " '%s'\n" % self.work \
                              + "is not a valid entry."
  
  
***************
*** 349,358 ****
  
    # Copy to the clipboard
    def clipboardCopy(self, event):
-    ## print "Copy"
      if self.selection1 != None:
        sel1, sel2 = self.getSelectionArea()
-      ## print self.display[sel1:sel2]
        self.dispatchEvent(GFEvent('setClipboard',
                 text=self.display[sel1:sel2]))
  
--- 345,352 ----
***************
*** 360,373 ****
  
  
    def clipboardCut(self, event):
-    ## print "Cut"
      self.clipboardCopy(event)
      edevent = GFEvent("requestKEYPRESS", text="")
      self.dispatchEvent(edevent)
  
  
    def clipboardPaste(self, event):
-    ## print "Paste"
      event.text = self.dispatchEvent(GFEvent('getClipboard'))
      if event.text != None:
        self.addText(event)
--- 354,365 ----
***************
*** 474,492 ****
  
      return FieldDisplayHandler.setValue(self, value)
  
    # TODO: Replace with format mask
!   def _buildDisplayHelper(self, value, editing):
!    ## print "building display for '%s'" % value
!     if value in (None,""):
        return ""
!     value = float(value)
!     if int(value) == value:
!       return "%d" % value
!     else:
!       return "%f" % value
  
  
    def _buildValue(self):
      try:
        self.value = float(self.work)
        return 1
--- 466,522 ----
  
      return FieldDisplayHandler.setValue(self, value)
  
+ 
    # TODO: Replace with format mask
!   def _buildDisplayHelper(self, val, editing):
!     print "_buildDisplayHelper('%s')" % val
!     if val in (None,""):
        return ""
! 
!     try:
!       value = float(val)
!     except ValueError:
!       return str(val)
! 
!     try:
!       if int(value) == value:
!         value = "%d" % value
!         if str(val)[-1:] == ".":
!           value += "."
!       else:
!         value = "%s" % value
!     except OverflowError:
!       value = "%s" % value
! 
!     if not editing:
!       # Comma-fy (Temporary!)
!       if value[:1] == '-':
!         minus = "-"
!         value = value[1:]
!       else:
!         minus = ""
! 
!       try:
!         whole, decimal = string.split(value,'.')
!         value = ".%s" % decimal
!       except ValueError:
!         whole = value
!         value = ""
! 
!       while len(whole) > 3:
!         value = ",%s%s" % (whole[-3:], value)
!         whole = whole[:-3]
! 
!       value = minus + whole + value
! 
!     return value
  
  
    def _buildValue(self):
+     if not len(self.work):
+       self.value = None
+       return 1
+ 
      try:
        self.value = float(self.work)
        return 1
***************
*** 501,512 ****
  # Handler for Date types
  #
  class DateDisplayHandler(FieldDisplayHandler):
!   def __init__(self, entry, displayMask, inputMask):
  ##    FieldDisplayHandler.__init__(self, entry, eventHandler,
  ##            DateMask.DateMask(displayMask, inputMask, displayMask))
      FieldDisplayHandler.__init__(self, entry, eventHandler, None)
  
  
  
  
  #############################################################################
--- 531,592 ----
  # Handler for Date types
  #
  class DateDisplayHandler(FieldDisplayHandler):
!   def __init__(self, entry, eventHandler, displayMask, inputMask):
  ##    FieldDisplayHandler.__init__(self, entry, eventHandler,
  ##            DateMask.DateMask(displayMask, inputMask, displayMask))
      FieldDisplayHandler.__init__(self, entry, eventHandler, None)
  
  
+   def setValue(self, value):
+     return FieldDisplayHandler.setValue(self, value)
+ 
+ 
+   # TODO: Replace with format mask
+   def _buildDisplayHelper(self, value, editing):
+     if editing:
+       format = "%m/%d/%Y"
+     else:
+       format = "%m/%d/%y"
+ 
+     if value in (None,""):
+       return ""
+     try:
+       return value.strftime(format)
+     except AttributeError:
+       return str(value)
+ 
+ 
+   def _buildValue(self):
+ 
+     if not len(self.work):
+       self.value = None
+       return 1
+ 
+     # TODO: Replace with format mask
+     try:
+       value = string.replace(string.replace(self.work,'.','/'),'-','/')
+ 
+       # Support for quick entry like '123102' for '12/31/02'
+       if len(value) in (6,8) and string.find(value,'/') == -1:
+         month = value[:2]
+         day = value[2:4]
+         year = value[4:]
+       else:
+         month, day, year = string.split(value,'/')
+ 
+       year = int(year)
+       if year < 100:
+         if year > 50:
+           year = year + 1900
+         else:
+           year = year + 2000
+ 
+       self.value = DateTime(year, int(month), int(day))
+ 
+       return 1
+     except:
+       return 0
+ 
  
  
  #############################################################################
***************
*** 529,535 ****
      if not hasattr(self.entry,'_allowedValues'):
        self.entry.allowedValues()
  
-    ## print "beginEdit.. %s" % self.display
      self.editing = 1
      self.modified = 0
  
--- 609,614 ----
***************
*** 553,559 ****
  
    # TODO: Replace with format mask
    def _buildDisplayHelper(self, value, editing):
-    ## print "building display for '%s'" % value
      self._dropdownIndex = 0
      if value in (None,""):
        return ""
--- 632,637 ----



reply via email to

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