commit-gnue
[Top][All Lists]
Advanced

[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)
 





reply via email to

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