[Top][All Lists]
[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 ----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue common/src/dbdrivers/_dbsig/DBdriver.py co...,
Jason Cater <=