commit-gnue
[Top][All Lists]
Advanced

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

gnue/gnuef samples/contact.gfd src/DSpostgresql...


From: James Thompson
Subject: gnue/gnuef samples/contact.gfd src/DSpostgresql...
Date: Thu, 05 Oct 2000 22:25:12 -0700

CVSROOT:        /cvs
Module name:    gnue
Changes by:     James Thompson <address@hidden> 00/10/05 22:25:11

Modified files:
        gnuef/samples  : contact.gfd 
        gnuef/src      : DSpostgresql.py GFForm.py GFObjects.py 
                         UIwxpython.py 

Log message:
        More database related changes

CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/samples/contact.gfd.diff?r1=1.6&r2=1.7
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/DSpostgresql.py.diff?r1=1.2&r2=1.3
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFForm.py.diff?r1=1.12&r2=1.13
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFObjects.py.diff?r1=1.8&r2=1.9
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIwxpython.py.diff?r1=1.6&r2=1.7

Patches:
Index: gnue/gnuef/samples/contact.gfd
diff -u gnue/gnuef/samples/contact.gfd:1.6 gnue/gnuef/samples/contact.gfd:1.7
--- gnue/gnuef/samples/contact.gfd:1.6  Tue Oct  3 22:04:58 2000
+++ gnue/gnuef/samples/contact.gfd      Thu Oct  5 22:25:10 2000
@@ -9,7 +9,7 @@
 </options>
 
 
-  <database name="gnue_data" provider="postgres" db_name="gnue"/>
+  <database name="gnue" provider="postgresql" dbname="gnue" host="gnue"/>
   <dataset name="qrySomeQuery" databaseName="gnue_data" 
    query="select * from country;"/>
   <datasource name="dtsrcCoolBeans" DataSet="qrySomeQuery"/>   
Index: gnue/gnuef/src/DSpostgresql.py
diff -u gnue/gnuef/src/DSpostgresql.py:1.2 gnue/gnuef/src/DSpostgresql.py:1.3
--- gnue/gnuef/src/DSpostgresql.py:1.2  Tue Oct  3 22:04:58 2000
+++ gnue/gnuef/src/DSpostgresql.py      Thu Oct  5 22:25:11 2000
@@ -13,43 +13,83 @@
 #
 
 import GFOptions
-import _pg
+import pg
+import string
 
 class DSLink:
   def __init__(self):
     if GFOptions.DEBUG:
       print "Postgresql database driver initializing"
     pass;
-
     self.connection = None
     
   def connect(self, host, dbname, user, passwd):
     if GFOptions.DEBUG:
       print "connecting"
 
-    self.connection = _pg.connect(dbname, host, -1, None, None, user, passwd)
+    self.connection = pg.DB(dbname, host, -1, None, None, user, passwd)
     
   def disconnect(self):
     self.connection.close()
-        
+
   def commit(self):
     self.connection.commit()
     
   def rollback(self):
     self.connection.rollback()
 
-  def query(self):
-    pass;
+  def insert(self,table,mask):
+    self.connection.insert(table,mask)
+    return mask
+  
+  def delete(self,table,mask):
+    self.connection.delete(table,mask)
+
+  def update(self,table,mask):
+    print "Updating %s " % (table)
+    print mask
+    mask = self.connection.update(table,mask)
+
+  def query(self,table,mask):
+    command = self.constructSQL('query',table, mask)
+    resultset = self.connection.query(command).dictresult()
+    print resultset
+    return resultset
+
+  def getResults(self):
+    return resultset
+
+  def constructSQL(self, type, table, mask = None):
+    sql = None
+    fields = None
+    qualifier = None
+    
+    if type == 'query':
+      action = "SELECT "
+      location = "FROM %s " % (table)
+
+      fields = " oid AS oid_%s, %s " % (table, mask == [] and 
string.join(mask.keys(), ',') or '*')
       
-  def nextObject(self):
-    pass;
+      if mask == []:
+        for fieldname in mask.keys():
+          if mask[fieldname] != None:
+            if qualifier == None:
+              qualifier = "WHERE %s LIKE  '%s'" % (fieldname,mask[fieldname])
+            else:
+              qualifier = "%s AND %s LIKE  %s" % (qualifier, 
fieldname,mask[fieldname])
+        
+      sql = action + fields + location + (qualifier and qualifier or "")    
 
-  def prevObject(self):
-    pass;
+    else:
+      print "constructSQL: unsupport SQL statement type"
 
-  def newObject(self):
-    pass;
-      
-    
-#  def defQuery(self):
+    if GFOptions.DEBUG > 50:
+      print sql
+
+    return sql
+
+
+
+
+
 
Index: gnue/gnuef/src/GFForm.py
diff -u gnue/gnuef/src/GFForm.py:1.12 gnue/gnuef/src/GFForm.py:1.13
--- gnue/gnuef/src/GFForm.py:1.12       Tue Oct  3 22:04:58 2000
+++ gnue/gnuef/src/GFForm.py    Thu Oct  5 22:25:11 2000
@@ -43,16 +43,21 @@
                            'requestMODETOGGLE' : self.toggleInsertMode,
                            'requestPREVRECORD' : self.prevRecord,
                            'requestNEXTRECORD' : self.nextRecord,
+
                            'requestNEWRECORD'  : self.newRecord,
+                           
+#                           'requestQUERY'      : self.requestQuery,
+#                           'cancelQUERY'       : self.requestQuery,
 
-                           'recordSWITCHED'    :self.recordSwitched,
+                           'recordSWITCHED'    : self.recordSwitched,
 
-#                           'requestLOGIN'      :self.requestLogin,
-                           'uiINITIALIZED'     :self.uiInitialized
+#                           'requestLOGIN'     : self.requestLogin,
+                           'uiINITIALIZED'     : self.uiInitialized
 
                            }
 
     self.databaseDictionary = {}
+    self.datasourceDictionary = {}
 
     # Insert/Overwrite mode
     self.insertMode = 1
@@ -86,9 +91,12 @@
     self.walk(self.initEntries)
 
     # Connect to the defined databases
-    self.walk(self.initDatabases)
+    self.walk(self.initDatabaseObjects)
     if GFOptions.DEBUG > 50:
+      print "Database Dictionary"
       print self.databaseDictionary
+      print "Datasource Dictionary"
+      print self.datasourceDictionary
       
     
   #
@@ -109,14 +117,15 @@
   def initBlocks(self, object):
     if object.getObjectType() == 'GFBlock':
       self.blockList.append(object)
-      object.initDataSource()
-      #object.datalink.connect()
 
   def initEntries(self, object):
     if object.getObjectType() == 'GFEntry':
       object.valueArray[0] = object.value
 
-  def initDatabases(self, object):
+  def initDatabaseObjects(self, object):
+    if object.getObjectType() =='GFDatasource':
+      self.datasourceDictionary[object.name]=object
+      
     if object.getObjectType() =='GFDatabase':
       self.databaseDictionary[object.name]=object
       
@@ -249,13 +258,7 @@
   # Called whenever an event source has requested that the
   # focus change to the next data entry block
   #
-  def nextBlock(self, event):
-
-#    print "Current Page", self.currentPage
-#    print "Current Block", self.currentBlock
-#    print "Current Entry", self.currentEntry
-
-    
+  def nextBlock(self, event):      
     nextBlock = self.blockList[0]
     keepNext = 0
     for object in self.blockList:
Index: gnue/gnuef/src/GFObjects.py
diff -u gnue/gnuef/src/GFObjects.py:1.8 gnue/gnuef/src/GFObjects.py:1.9
--- gnue/gnuef/src/GFObjects.py:1.8     Tue Oct  3 22:04:58 2000
+++ gnue/gnuef/src/GFObjects.py Thu Oct  5 22:25:11 2000
@@ -30,9 +30,6 @@
     self.attributes = {}
     if parent :
       parent.addChild(self)
-#      self.root = parent.root
-#    else:
-#      self.root = self
       
   def getObjectType(self):
     return self.type
@@ -77,18 +74,12 @@
   def __init__(self, parent=None, value=None):
     self.value = value
     self.type = "GFValue"
-    if GFOptions.DEBUG:
-      print "Value = ", self.value
     GFObj.__init__(self, parent)
     
   def setValue(self, value):
-    if GFOptions.DEBUG:
-      print "Value = ", self.value
     self.value = value
 
   def getValue(self):
-    if GFOptions.DEBUG:
-      print "Value = ", self.value
     return self.value
 
 #
@@ -142,12 +133,47 @@
       GFValue.setValue(self,value)
 
 #
+#GFDatabase
+#
+class GFDatabase(GFObj):
+  def __init__(self, parent=None):
+    GFObj.__init__(self, parent)
+    self.type = "GFDatabase"
+
+  def initialize(self,user,passwd):
+    if self.provider == "postgresql":
+      import DSpostgresql
+      self.link = DSpostgresql.DSLink()
+      self.link.connect(self.host,self.dbname,user,passwd)
+
+  def query(self, table, mask):
+    results = self.link.query(table,mask)
+    return results
+
+  def update(self, table, mask):
+    results = self.link.update(table,mask)
+    return results
+      
+  def insert(self, table, mask):
+    results = self.link.insert(table,mask)
+    return results
+  
+  def delete(self, table, mask):
+    self.link.insert(table,mask)
+      
+
+#
 #GFDataSource
 #
 class GFDataSource(GFObj):
   def __init__(self, parent=None):
     GFObj.__init__(self, parent)
     self.type = "GFDataSource"
+    self.resultSet = {}
+    
+  def initialize(self):
+    pass
+
 #
 #GFDataSet
 #
@@ -156,19 +182,7 @@
     GFObj.__init__(self, parent)
     self.type = "GFDataSet"
     
-#
-#GFDatabase
-#
-class GFDatabase(GFObj):
-  def __init__(self, parent=None):
-    GFObj.__init__(self, parent)
-    self.type = "GFDatabase"
 
-  def initialize(self,user,passwd):
-    if self.provider == "postgresql":
-      import DSpostgresql
-      self.link = DSpostgresql.DSLink()
-      self.link.connect(self.host,self.dbname,user,passwd)
 #
 # 
 # More complex objects below
@@ -256,12 +270,12 @@
     #self.dispatchEvent(GFEvent('recordCREATED',self))
     
              
-  def initDataSource(self):
-    try:
-      self.datalink = 
DSobjectServer.DSdataLink(self.__dict__["dbName"],self.__dict__["tableName"])
-    except KeyError:
-      print "Not tied to db"
-      pass
+  #def initDataSource(self):
+  #  try:
+  #    self.datalink = 
DSobjectServer.DSdataLink(self.__dict__["dbName"],self.__dict__["tableName"])
+  #  except KeyError:
+  #    print "Not tied to db"
+  #    pass
 
 
 
Index: gnue/gnuef/src/UIwxpython.py
diff -u gnue/gnuef/src/UIwxpython.py:1.6 gnue/gnuef/src/UIwxpython.py:1.7
--- gnue/gnuef/src/UIwxpython.py:1.6    Tue Oct  3 18:19:53 2000
+++ gnue/gnuef/src/UIwxpython.py        Thu Oct  5 22:25:11 2000
@@ -20,7 +20,8 @@
 # The public interface to the User Interface
 # All UIs must provide this class
 #
-class GFUserInterface(GFUserInterfaceBase, wxApp):
+#class GFUserInterface(GFUserInterfaceBase, wxApp):
+class GFUserInterface(wxApp,GFUserInterfaceBase):
   def __init__(self, form):
     wxApp.__init__(self,0)
     GFUserInterfaceBase.__init__(self,form)
@@ -176,6 +177,7 @@
     #
     # don't put code in here, put it in onInit()
     #
+
     return true
 
   def nextPage(self):



reply via email to

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