[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r7357 - in trunk/gnue-common/src/datasources: . drivers/Base
From: |
reinhard |
Subject: |
[gnue] r7357 - in trunk/gnue-common/src/datasources: . drivers/Base |
Date: |
Tue, 12 Apr 2005 14:16:20 -0500 (CDT) |
Author: reinhard
Date: 2005-04-12 14:16:18 -0500 (Tue, 12 Apr 2005)
New Revision: 7357
Modified:
trunk/gnue-common/src/datasources/Exceptions.py
trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
Log:
Cleaning up readonly, but no changes in behaviour.
Modified: trunk/gnue-common/src/datasources/Exceptions.py
===================================================================
--- trunk/gnue-common/src/datasources/Exceptions.py 2005-04-12 14:10:31 UTC
(rev 7356)
+++ trunk/gnue-common/src/datasources/Exceptions.py 2005-04-12 19:16:18 UTC
(rev 7357)
@@ -46,10 +46,51 @@
# does not support (e.g., not all dbdrivers support raw sql mode.)
pass
-class ReadOnlyError(Error):
- # Raised when an attempt is made to update a read-only data object.
+# -----------------------------------------------------------------------------
+# Read only violation
+# -----------------------------------------------------------------------------
+
+class ReadOnlyError (errors.ApplicationError):
+ """
+ Cannot insert/modify/delete data from a read only datasource.
+ """
pass
+# -----------------------------------------------------------------------------
+
+class ReadOnlyInsertError (ReadOnlyError):
+ """
+ Cannot insert a new record into a read only datasource.
+ """
+ def __init__ (self):
+ ReadOnlyError.__init__ (self,
+ u_("Cannot insert a new record into a read only datasource"))
+
+# -----------------------------------------------------------------------------
+
+class ReadOnlyModifyError (ReadOnlyError):
+ """
+ Cannot modify data of a read only datasource.
+ """
+ def __init__ (self):
+ ReadOnlyError.__init__ (self,
+ u_("Cannot modify data of a read only datasource"))
+
+# -----------------------------------------------------------------------------
+
+class ReadOnlyDeleteError (ReadOnlyError):
+ """
+ Cannot delete a record from a read only datasource.
+ """
+ def __init__ (self):
+ ReadOnlyError.__init__ (self,
+ u_("Cannot delete a record from a read only datasource"))
+
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+
class MasterDetailFieldMismatch(errors.ApplicationError):
# Raised when a the number of master fields doesn't match the
# number of detail fields. (e.g., masterlink="id,subid"
Modified: trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-04-12
14:10:31 UTC (rev 7356)
+++ trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-04-12
19:16:18 UTC (rev 7357)
@@ -38,13 +38,14 @@
# ---------------------------------------------------------------------------
def __init__ (self, parent, initialData = {}, connection = None,
- tablename = '', boundFields = [], masterRecord = None,
+ tablename = '', boundFields = [], readonly = False, masterRecord = None,
masterKeyFields = [], masterLinkFields = [], defaultValues = {},
rowidField = None, primarykeyFields = []):
self.__connection = connection
self.__tablename = tablename
self.__boundFields = [f.lower () for f in boundFields]
+ self.__readonly = readonly
self.__masterRecord = masterRecord
self.__masterKeyFields = masterKeyFields
self.__masterLinkFields = masterLinkFields
@@ -164,15 +165,9 @@
@param value: Value to set
"""
- do = self._parent._dataObject
+ if fieldname in self.__boundFields and self.__readonly:
+ raise Exceptions.ReadOnlyModifyError
- # If this field is bound to a datasource and the datasource is read only,
- # generate an error.
- if fieldname in self.__boundFields and self._parent.isReadOnly ():
- # Provide better feedback??
- tmsg = u_("Attempted to modify read only field '%s'") % fieldname
- raise Exceptions.ReadOnlyError, tmsg
-
self.__setField (fieldname, value)
if fieldname in self.__boundFields:
if self.__status in ['empty', 'clean']:
@@ -180,6 +175,7 @@
self.__status = 'inserted'
elif self.__status == 'clean':
self.__status = 'modified'
+ do = self._parent._dataObject
if hasattr (do, '_dataSource'):
do._dataSource._onModification (self)
@@ -217,11 +213,10 @@
The actual deletion occurs on the next call to the L{post} method.
"""
- if self._parent.isReadOnly():
- # Provide better feedback??
- tmsg = _("Attempted to delete from a read only datasource")
- raise Exceptions.ReadOnlyError, tmsg
+ if self.__readonly:
+ raise Exceptions.ReadOnlyDeleteError
+
if self.__status in ['empty', 'inserted']:
self.__status = 'void'
elif self.__status in ['clean', 'modified']:
Modified: trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-04-12
14:10:31 UTC (rev 7356)
+++ trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-04-12
19:16:18 UTC (rev 7357)
@@ -42,15 +42,14 @@
def __init__ (self, dataObject, defaultValues = {}, readonly = False,
masterRecordSet = None):
self._dataObject = dataObject
+ self.__defaultValues = defaultValues.copy ()
+ self.__readonly = readonly
+ self._masterRecordSet = masterRecordSet
self._cachedRecords = []
self._currentRecord = -1
- self._masterRecordSet = masterRecordSet
- self._readonly = readonly
self._recordCount = 0
self._postingRecord = None
- self.__defaultValues = defaultValues.copy ()
-
if self._dataObject._dataSource:
self.__rowidField = self._dataObject._dataSource._rowidField
self.__primarykeyFields = self._dataObject._dataSource._primarykeyFields
@@ -102,11 +101,6 @@
# Status information
# ---------------------------------------------------------------------------
- def isReadOnly (self):
- return self._readonly
-
- # ---------------------------------------------------------------------------
-
def isFirstRecord (self):
return (self._currentRecord == 0)
@@ -166,6 +160,7 @@
connection = self._dataObject._dataSource._connection,
tablename = self._dataObject.table,
boundFields = self._dataObject._fieldReferences.keys (),
+ readonly = self.__readonly,
masterRecord = self._masterRecordSet,
masterKeyFields = self._dataObject._masterfields,
masterLinkFields = self._dataObject._detailfields,
@@ -389,10 +384,8 @@
def insertRecord (self, defaultValues = {}):
- if self.isReadOnly():
- # Provide better feedback??
- tmsg = _("Attempted to insert into a read only datasource")
- raise Exceptions.ReadOnlyError, tmsg
+ if self.__readonly:
+ raise Exceptions.ReadOnlyInsertError
gDebug (8, 'Inserting a blank record in %s' % self)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r7357 - in trunk/gnue-common/src/datasources: . drivers/Base,
reinhard <=