dabo Commit
Revision 1267
Date: 2005-09-08 10:53:51 -0700 (Thu, 08 Sep 2005)
Author: paul

Changed:
U   trunk/dabo/biz/dBizobj.py
U   trunk/dabo/db/dCursorMixin.py
U   trunk/dabo/db/dMemento.py

Log:
Removed some instances of mutable objects in method signatures.

Added a skipFields feature to dMemento, that doesn't save them
to the memento. dCursor sets the skipFields parameter to the list
of NonUpdateFields. So, if user code modifies a NonUpdateField, 
it will be totally ignored.



Diff:
Modified: trunk/dabo/biz/dBizobj.py
===================================================================
--- trunk/dabo/biz/dBizobj.py   2005-09-08 14:47:54 UTC (rev 1266)
+++ trunk/dabo/biz/dBizobj.py   2005-09-08 17:53:51 UTC (rev 1267)
@@ -1138,7 +1138,9 @@
        def _getNonUpdateFields(self):
                return self._CurrentCursor.getNonUpdateFields()
                
-       def _setNonUpdateFields(self, fldList=[]):
+       def _setNonUpdateFields(self, fldList=None):
+               if fldList is None:
+                       fldList = []
                self._CurrentCursor.setNonUpdateFields(fldList)
        
        def getWordMatchFormat(self):

Modified: trunk/dabo/db/dCursorMixin.py
===================================================================
--- trunk/dabo/db/dCursorMixin.py       2005-09-08 14:47:54 UTC (rev 1266)
+++ trunk/dabo/db/dCursorMixin.py       2005-09-08 17:53:51 UTC (rev 1267)
@@ -226,6 +226,7 @@
                # any updates.
                self.__setNonUpdateFields()
 
+
                # Clear the unsorted list, and then apply the current sort
                self.__unsortedRows = []
                if self.sortColumn:
@@ -419,7 +420,9 @@
                                ret = "<![CDATA[%s]]>" % 
val.encode(self.Encoding)
                return ret
 
-       def setNonUpdateFields(self, fldList=[]):
+       def setNonUpdateFields(self, fldList=None):
+               if fldList is None:
+                       fldList = []
                self.nonUpdateFields = fldList
        
        
@@ -961,7 +964,7 @@
                if not row.has_key(k.CURSOR_MEMENTO):
                        row[k.CURSOR_MEMENTO] = dMemento()
                # Take the snapshot of the current values
-               row[k.CURSOR_MEMENTO].setMemento(row)
+               row[k.CURSOR_MEMENTO].setMemento(row, 
skipFields=self.getNonUpdateFields())
 
 
        def __setStructure(self):

Modified: trunk/dabo/db/dMemento.py
===================================================================
--- trunk/dabo/db/dMemento.py   2005-09-08 14:47:54 UTC (rev 1266)
+++ trunk/dabo/db/dMemento.py   2005-09-08 17:53:51 UTC (rev 1267)
@@ -3,30 +3,40 @@
 class dMemento(object):
        __snapshot = {}
 
-       def __init__(self, vals=None):
+       def __init__(self, vals=None, skipFields=None):
+               self.__skipFields = []
                if vals is None:
                        self.setMemento({})
                else:
-                       self.setMemento(vals)
+                       self.setMemento(vals, skipFields)
 
                self.diff = {}
 
 
-       def setMemento(self, vals):
-               self.__snapshot = vals.copy()
+       def setMemento(self, vals, skipFields=None):
+               if skipFields is None:
+                       skipFields = []
+               self.__skipFields = skipFields
+               vals = vals.copy()
+               for f in skipFields:
+                       del(vals[f])
+               self.__snapshot = vals
 
 
        def isChanged(self, newvals):
                """ Return True if the snapshot does not match the passed 
dictionary.
                """
+               skipFields = self.__skipFields
+               newvals = newvals.copy()
+               for f in skipFields:
+                       del(newvals[f])
+               return (self.__snapshot != newvals)
 
 #         if self.__snapshot != newvals:
 #           print "orig:", self.__snapshot
 #           print "new:", newvals
 
-               return (self.__snapshot != newvals)
 
-
        def getOrigVal(self, fld):
                """ Get the original value of the passed field name.
                """
@@ -53,6 +63,9 @@
                """
                ret = {}
                for kk, vv in newvals.items():
+                       if kk in self.__skipFields:
+                               # Ignore the skipped fields
+                               continue
                        if kk == k.CURSOR_MEMENTO:
                                # Ignore the mementos
                                continue




_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev

Reply via email to