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