[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/gnuef/src GFForm.py GFObjects.py UIwxpytho...
From: |
James Thompson |
Subject: |
gnue/gnuef/src GFForm.py GFObjects.py UIwxpytho... |
Date: |
Mon, 29 Jan 2001 19:31:00 -0800 |
CVSROOT: /cvs
Module name: gnue
Changes by: James Thompson <address@hidden> 01/01/29 19:31:00
Modified files:
gnuef/src : GFForm.py GFObjects.py UIwxpython.py
gnuef/src/drivers/postgresql: DBdriver.py
Added files:
gnuef/src : GFError.py
Log message:
Started adding support for DBError exceptions
Enhanced login support
Transactions now supported on commit
CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFError.py.diff?r1=NONE&r2=1.1
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFForm.py.diff?r1=1.64&r2=1.65
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/GFObjects.py.diff?r1=1.56&r2=1.57
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/UIwxpython.py.diff?r1=1.55&r2=1.56
http://subversions.gnu.org/cgi-bin/cvsweb/gnue/gnuef/src/drivers/postgresql/DBdriver.py.diff?r1=1.11&r2=1.12
Patches:
Index: gnue/gnuef/src/GFForm.py
diff -u gnue/gnuef/src/GFForm.py:1.64 gnue/gnuef/src/GFForm.py:1.65
--- gnue/gnuef/src/GFForm.py:1.64 Mon Jan 29 14:50:34 2001
+++ gnue/gnuef/src/GFForm.py Mon Jan 29 19:31:00 2001
@@ -20,6 +20,7 @@
from GFEvent import *
from GFParser import *
import GFDebug
+from GFError import DBError
class GFForm(GFObj, GFEventAware):
def __init__(self, parent=None):
@@ -164,20 +165,28 @@
if object.getObjectType() =='GFDatabase':
self.databaseDictionary[object.name]=object
-
- #Login
- authcode = ["", "", object]
- self.dispatchEvent( GFEvent('getLogin', authcode) )
- user = authcode[0]
- passwd = authcode[1]
-
- try:
- object.initialize(user,passwd)
- except:
- if sys.platform != 'win32':
- os.system("stty sane")
- print "Unexpected error:", sys.exc_info()[0], sys.exc_info()[1]
- sys.exit()
+ while 1:
+ try:
+ #Login
+ authcode = ["", "", object]
+ self.dispatchEvent( GFEvent('getLogin', authcode) )
+ user = authcode[0]
+ passwd = authcode[1]
+
+ object.initialize(user,passwd)
+
+ except DBError:
+ message = GFMsgBox(self,"Database initialization error:\n%s\n%s " %
(sys.exc_info()[0], sys.exc_info()[1]))
+ message.show()
+
+
+ except:
+ if sys.platform != 'win32':
+ os.system("stty sane")
+ print "Unexpected error:", sys.exc_info()[0], sys.exc_info()[1]
+ sys.exit()
+ else:
+ break
def initTriggers(self, object):
if object.getObjectType() == "GFTrigger":
@@ -328,21 +337,27 @@
self.updateStatus()
def executeCommit(self, event):
- for key in self.datasourceDictionary.keys():
- self.datasourceDictionary[key].beginTransaction()
-
- if not hasattr(self,'readonly'):
- for block in self.blockList:
- GFDebug.printMesg(1, "Saving %s"%block.name)
- block.processCommit()
- self.updateRecordStatus()
- self.updateRecordCounter()
- else:
- self.dispatchEvent(GFEvent('formALERT','Form is readonly'))
+ for key in self.databaseDictionary.keys():
+ self.databaseDictionary[key].beginTransaction()
- for key in self.datasourceDictionary.keys():
- self.datasourceDictionary[key].commit()
-
+ try:
+ if not hasattr(self,'readonly'):
+ for block in self.blockList:
+ GFDebug.printMesg(1, "Saving %s"%block.name)
+ block.processCommit()
+ self.updateRecordStatus()
+ self.updateRecordCounter()
+ else:
+ self.dispatchEvent(GFEvent('formALERT','Form is readonly'))
+
+ for key in self.databaseDictionary.keys():
+ self.databaseDictionary[key].commit()
+
+ except DBError:
+ for key in self.databaseDictionary.keys():
+ self.databaseDictionary[key].rollback()
+ message = GFMsgBox(self,"Database commit error:\n%s\n%s " %
(sys.exc_info()[0], sys.exc_info()[1]))
+ message.show()
def executeAbout(self,event):
version = GFOptions.VERSION
Index: gnue/gnuef/src/GFObjects.py
diff -u gnue/gnuef/src/GFObjects.py:1.56 gnue/gnuef/src/GFObjects.py:1.57
--- gnue/gnuef/src/GFObjects.py:1.56 Mon Jan 29 14:50:34 2001
+++ gnue/gnuef/src/GFObjects.py Mon Jan 29 19:31:00 2001
@@ -209,7 +209,7 @@
for count in range(self.recordCount+1):
self.dataSourceLink.setField(count,self.detail,fieldValue, TRUE)
- #self.dataSourceLink.commit()
+ self.dataSourceLink.commit()
self.recordCount = self.dataSourceLink.getLastRecordNumber()
@@ -513,7 +513,7 @@
self.resultSet[count][newkey] = result[newkey]
print newkey, self.resultSet[count][newkey]
- self.dataConnection.commit()
+ #self.dataConnection.commit()
# Clean up record list
count = 0
@@ -604,6 +604,12 @@
results = self.link.query(table,mask,order_by)
return results
+ def beginTransaction(self):
+ self.link.beginTransaction()
+
+ def rollback(self):
+ self.link.rollback()
+
def commit(self):
self.link.commit()
Index: gnue/gnuef/src/UIwxpython.py
diff -u gnue/gnuef/src/UIwxpython.py:1.55 gnue/gnuef/src/UIwxpython.py:1.56
--- gnue/gnuef/src/UIwxpython.py:1.55 Mon Jan 29 14:50:34 2001
+++ gnue/gnuef/src/UIwxpython.py Mon Jan 29 19:31:00 2001
@@ -598,7 +598,6 @@
self.frame.Close()
def exitApplication(self,event):
- print "Wassup"
self.frame.Close(true)
@@ -656,17 +655,18 @@
#
- # Login support (not activated in this code)
+ # Login support
#
def getLogin(self, event):
self.logindata = event.data
- self.dlg = wxDialog(NULL, -1, "Login Required for %s" %
str(event.data[2].dbname),wxPoint(-1,-1),wxSize(150,200))
+ self.dlg = wxDialog(NULL, -1, "Login Required for %s" %
str(event.data[2].dbname),wxPoint(-1,-1),wxSize(250,150))
self.dlg.SetBackgroundColour(wxWHITE)
self.dlg.SetAutoLayout(true)
bmp = wxImage(GFOptions.smallBMP, wxBITMAP_TYPE_BMP).ConvertToBitmap()
+ dlgWidth, dlgHeight = self.dlg.GetSizeTuple()
- wxStaticBitmap(self.dlg,-1, bmp, wxPoint(5, 10),wxSize(bmp.GetWidth(),
bmp.GetHeight()))
+ wxStaticBitmap(self.dlg,-1, bmp, wxPoint((dlgWidth-bmp.GetWidth())/2,
10),wxSize(bmp.GetWidth(), bmp.GetHeight()))
wxStaticText(self.dlg, 1010, "Username",wxPoint(5, 25+ bmp.GetHeight()),
wxSize(75, 20))
self.usernameEntry = wxTextCtrl(self.dlg, 1020,"",wxPoint(80, 25+
bmp.GetHeight()), wxSize(150, 20))
wxStaticText(self.dlg, 1010, "Password",wxPoint(5, 50+ bmp.GetHeight()),
wxSize(75, 20))
@@ -703,7 +703,11 @@
def msgBox(self, event):
- parent = wxPyTypeCast( self.frame, 'wxWindow' )
+ if hasattr(self,'frame'):
+ parent = wxPyTypeCast( self.frame, 'wxWindow' )
+ else:
+ parent = NULL
+
message = event.data.message
caption = event.data.caption
dialog = wxMessageDialog(parent, message, caption,
style=wxOK|wxICON_EXCLAMATION )
Index: gnue/gnuef/src/drivers/postgresql/DBdriver.py
diff -u gnue/gnuef/src/drivers/postgresql/DBdriver.py:1.11
gnue/gnuef/src/drivers/postgresql/DBdriver.py:1.12
--- gnue/gnuef/src/drivers/postgresql/DBdriver.py:1.11 Mon Jan 29 14:50:34 2001
+++ gnue/gnuef/src/drivers/postgresql/DBdriver.py Mon Jan 29 19:31:00 2001
@@ -16,10 +16,11 @@
import string
import sys
from gnue.forms import GFOptions
+from gnue.forms.GFError import DBError
class DBdriver:
def __init__(self):
- print "Postgresql database driver initializing"
+
if GFOptions.DEBUG:
print "Postgresql database driver initializing"
self.connection = None
@@ -28,36 +29,64 @@
def connect(self, host, dbname, user, passwd):
if GFOptions.DEBUG:
print "connecting"
- self.connection = pg.DB(dbname, host, -1, None, None, user, passwd)
+ try:
+ self.connection = pg.DB(dbname, host, -1, None, None, user, passwd)
+ except pg.error, value:
+ raise DBError, value
+
+
def disconnect(self):
- self.connection.close()
+ try:
+ self.connection.close()
+ except pg.error, value:
+ raise DBError, value
def beginTransaction(self):
- self.connection.query('BEGIN')
+ try:
+ self.connection.query('BEGIN')
+ except pg.error, value:
+ raise DBError, value
def commit(self):
- self.connection.query('COMMIT')
-
+ try:
+ self.connection.query('END')
+ except pg.error, value:
+ raise DBError, value
+
def rollback(self):
- self.connection.query('ROLLBACK')
+ try:
+ self.connection.query('ROLLBACK')
+ except pg.error, value:
+ raise DBError, value
def insert(self,table,mask):
for fieldname in mask.keys():
if mask[fieldname] == None or len(mask[fieldname]) == 0:
del mask[fieldname]
-
- self.connection.insert(table,mask)
+ try:
+ self.connection.insert(table,mask)
+ except pg.error, value:
+ raise DBError, value
return mask
def delete(self,table,mask):
- self.connection.delete(table,mask)
+ try:
+ self.connection.delete(table,mask)
+ except pg.error, value:
+ raise DBError, value
def update(self,table,mask):
- mask = self.connection.update(table,mask)
+ try:
+ mask = self.connection.update(table,mask)
+ except pg.error, value:
+ raise DBError, value
def getFieldList(self,table):
- return self.connection.get_attnames(table)
+ try:
+ return self.connection.get_attnames(table)
+ except pg.error, value:
+ raise DBError, value
#
# The code below has been written to be compatible with
@@ -67,7 +96,11 @@
#
def query(self,table,mask,order_by=None):
command = self.constructSQL('query',table, mask,order_by)
- resultset = self.connection.query(command).dictresult()
+ try:
+ resultset = self.connection.query(command).dictresult()
+ except pg.error, value:
+ raise DBError, value
+
return resultset
def constructSQL(self, style, table, mask = None, order_by=None):
@@ -96,8 +129,6 @@
else:
print "constructSQL: unsupport SQL statement type"
-
-
if GFOptions.DEBUG > 50:
print sql
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/gnuef/src GFForm.py GFObjects.py UIwxpytho...,
James Thompson <=