[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r7376 - trunk/gnue-common/src/datasources/drivers/Base
From: |
reinhard |
Subject: |
[gnue] r7376 - trunk/gnue-common/src/datasources/drivers/Base |
Date: |
Fri, 15 Apr 2005 08:57:20 -0500 (CDT) |
Author: reinhard
Date: 2005-04-15 08:57:20 -0500 (Fri, 15 Apr 2005)
New Revision: 7376
Modified:
trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
Log:
Added some private variables to ResultSet class.
Modified: trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
2005-04-15 13:19:46 UTC (rev 7375)
+++ trunk/gnue-common/src/datasources/drivers/Base/DataObject.py
2005-04-15 13:57:20 UTC (rev 7376)
@@ -83,10 +83,7 @@
cond = GConditions.combineConditions (cond, mastercond)
- resultset = self._resultSetClass (dataObject = self,
- defaultData = self._defaultData,
- readonly = readOnly,
- masterRecordSet = masterRecordSet)
+ resultset = self.__createResultSet (readOnly, masterRecordSet)
if self._dataSource.type == 'object':
resultset.query ('object',
@@ -107,12 +104,24 @@
def createEmptyResultSet(self, readOnly=0, masterRecordSet=None):
- return self._resultSetClass (dataObject = self,
- defaultData = self._defaultData,
- readonly = readOnly,
- masterRecordSet = masterRecordSet)
+ return self.__createResultSet (readOnly, masterRecordSet)
+ def __createResultSet (self, readOnly = False, masterRecord = None):
+
+ return self._resultSetClass (
+ dataObject = self,
+ defaultData = self._dataSource._defaultData,
+ connection = self._dataSource._connection,
+ rowidField = self._dataSource._rowidField,
+ primarykeyFields = self._dataSource._primarykeyFields,
+ tablename = self._dataSource.table,
+ boundFields = self._dataSource._fieldReferences.keys (),
+ readonly = readOnly,
+ masterRecord = masterRecord,
+ dataSource = self._dataSource)
+
+
# Add a detail data object. This dataobject will create a new resultset
# everytime this dataobject changes (new record, etc). The optional
# handler will be called after the detail dataobject is notified. The
Modified: trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-04-15
13:19:46 UTC (rev 7375)
+++ trunk/gnue-common/src/datasources/drivers/Base/RecordSet.py 2005-04-15
13:57:20 UTC (rev 7376)
@@ -22,7 +22,6 @@
# $Id$
import string
-import weakref
from gnue.common.apps import errors
from gnue.common.datasources import Exceptions
@@ -39,18 +38,18 @@
# ---------------------------------------------------------------------------
def __init__ (self,
- initialData = {},
- defaultData = {},
- connection = None,
- tablename = '',
- boundFields = [],
- readonly = False,
- masterRecord = None,
- masterKeyFields = [],
- masterLinkFields = [],
- rowidField = None,
+ initialData = {},
+ defaultData = {},
+ connection = None,
+ tablename = '',
+ rowidField = None,
primarykeyFields = [],
- dataSource = None):
+ boundFields = [],
+ readonly = False,
+ masterRecord = None,
+ masterKeyFields = [],
+ masterLinkFields = [],
+ dataSource = None):
"""
Create a new RecordSet instance.
@@ -61,6 +60,10 @@
@param connection: GConnection object the RecordSet object can use to post
changes.
@param tablename: Table name.
+ @param rowidField: Field name of the field containing a unique row id
+ generated by the backend, if available.
+ @param primaryKeyFields: List of field names that make up a unique key, if
+ available.
@param boundFields: List of fields to be included when posting changes to
the backend. All fields not in this list are considered unbound fields
and are not persistent.
@@ -72,28 +75,21 @@
masterLinkFields in this record.
@param masterLinkFields: Fields in this record matching the masterKeyFields
of the master record.
- @param rowidField: Field name of the field containing a unique row id
- generated by the backend, if available.
- @param primaryKeyFields: List of field names that make up a unique key, if
- available.
- @param dataSource: GDataSource instance to notify of data events.
+ @param dataSource: weak reference to a GDataSource instance to notify of
+ data events.
"""
self.__connection = connection
self.__tablename = tablename
+ self.__rowidField = rowidField
+ self.__primarykeyFields = primarykeyFields
self.__boundFields = boundFields
self.__readonly = readonly
self.__masterRecord = masterRecord
self.__masterKeyFields = masterKeyFields
self.__masterLinkFields = masterLinkFields
- self.__rowidField = rowidField
- self.__primarykeyFields = primarykeyFields
+ self.__dataSource = dataSource # this is already a weakref!
- if dataSource is not None:
- self.__dataSource = weakref.proxy (dataSource)
- else:
- self.__dataSource = None
-
# Record status
# New records: 'empty' -(setField)-> 'inserted' -(delete)-> 'void'
# Existing records: 'clean' -(setField)-> 'modified' -(delete)-> 'deleted'
Modified: trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-04-15
13:19:46 UTC (rev 7375)
+++ trunk/gnue-common/src/datasources/drivers/Base/ResultSet.py 2005-04-15
13:57:20 UTC (rev 7376)
@@ -24,6 +24,7 @@
__all__ = ['ResultSet']
import string
+import weakref
from gnue.common.datasources import Exceptions
@@ -39,24 +40,37 @@
# Constructor
# ---------------------------------------------------------------------------
- def __init__ (self, dataObject, defaultData = {}, readonly = False,
- masterRecordSet = None):
- self._dataObject = dataObject
- self.__defaultData = defaultData
- self.__readonly = readonly
- self._masterRecordSet = masterRecordSet
+ def __init__ (self, dataObject,
+ defaultData = {},
+ connection = None,
+ tablename = None,
+ rowidField = None,
+ primarykeyFields = [],
+ boundFields = [],
+ readonly = False,
+ masterRecord = None,
+ dataSource = None):
+
+ self._dataObject = dataObject
+ self.__defaultData = defaultData
+ self.__connection = connection
+ self.__tablename = tablename
+ self.__rowidField = rowidField
+ self.__primarykeyFields = primarykeyFields
+ self.__boundFields = boundFields
+ self.__readonly = readonly
+ self.__masterRecord = masterRecord
+
+ if dataSource is not None:
+ self.__dataSource = weakref.proxy (dataSource)
+ else:
+ self.__dataSource = None
+
self._cachedRecords = []
self._currentRecord = -1
self._recordCount = 0
self._postingRecord = None
- if self._dataObject._dataSource:
- self.__rowidField = self._dataObject._dataSource._rowidField
- self.__primarykeyFields = self._dataObject._dataSource._primarykeyFields
- else:
- self.__rowidField = None
- self.__primarykeyFields = []
-
# Objects to get informed about record navigation events
self.__listeners = []
@@ -85,10 +99,9 @@
if not hasattr (self, queryfunc):
raise Exceptions.ObjectTypeNotAvailableError, type
- getattr (self, queryfunc) (self._dataObject._dataSource._connection,
- **kwargs)
+ getattr (self, queryfunc) (self.__connection, **kwargs)
- self.__generator = self._fetch (self._dataObject.cache)
+ self.__generator = self._fetch (self.__dataSource.cache)
# (TODO: could be delayed to first call of getRecordCount)
self._recordCount = self._count ()
@@ -154,16 +167,16 @@
record = RecordSet (
initialData = initialData,
defaultData = __defaultData,
- connection = self._dataObject._dataSource._connection,
- tablename = self._dataObject.table,
- boundFields = self._dataObject._fieldReferences.keys (),
+ connection = self.__connection,
+ tablename = self.__tablename,
+ rowidField = self.__rowidField,
+ primarykeyFields = self.__primarykeyFields,
+ boundFields = self.__boundFields,
readonly = self.__readonly,
- masterRecord = self._masterRecordSet,
+ masterRecord = self.__masterRecord,
masterKeyFields = self._dataObject._masterfields,
masterLinkFields = self._dataObject._detailfields,
- rowidField = self.__rowidField,
- primarykeyFields = self.__primarykeyFields,
- dataSource = self._dataObject._dataSource)
+ dataSource = self.__dataSource)
if position is None:
self._cachedRecords.append (record)
@@ -188,7 +201,10 @@
return False
record = self.__createRecord (initialData = row)
- self._dataObject._dataSource._onRecordLoaded (record)
+
+ if self.__dataSource is not None:
+ self.__dataSource._onRecordLoaded (record)
+
return True
@@ -495,7 +511,7 @@
postingRecordset = self._postingRecord
if (self._postingRecord.isEmpty () or self._postingRecord.isDeleted ()) \
- and self._dataObject._dataSource._connection is not None:
+ and self.__connection is not None:
# Adjust the current record if a preceding record or the current record
# is deleted
self.__removeRecord (recordPosition)
@@ -563,10 +579,8 @@
while self.__cacheNextRecord ():
pass
- boundFields = self._dataObject._fieldReferences.keys ()
+ newData = otherResultSet.getDictArray (keyFields, self.__boundFields)
- newData = otherResultSet.getDictArray (keyFields, boundFields)
-
for (index, record) in enumerate (self._cachedRecords [:]):
if record.isEmpty ():
# keep empty record in old ResultSet
@@ -600,8 +614,10 @@
for row in l:
if row:
record = self.__createRecord (initialData = row)
- self._dataObject._dataSource._onRecordLoaded (record)
+ if self.__dataSource is not None:
+ self.__dataSource._onRecordLoaded (record)
+
# Move to record 0 if all preceding records were deleted
# (or set to -1 if all records were deleted)
if self._currentRecord < 0:
@@ -615,7 +631,8 @@
# Finally, tell everyone who wants to know that we have become a "new
# ResultSet" (i.e. the complete data should be redisplayed).
- self._dataObject._dataSource.notifyResultSetListeners ()
+ if self.__dataSource is not None:
+ self.__dataSource.notifyResultSetListeners ()
# ---------------------------------------------------------------------------
@@ -632,10 +649,9 @@
self.__generator = None
- if self._dataObject._dataSource and \
- self._dataObject._dataSource._currentResultSet == self:
- self._dataObject._dataSource.close ()
- self._dataObject = None
+ if self.__dataSource and self.__dataSource._currentResultSet == self:
+ self.__dataSource.close ()
+ self._dataObject = None
self.__listeners = []
@@ -727,9 +743,8 @@
# ---------------------------------------------------------------------------
def __repr__ (self):
- do = self._dataObject
- if hasattr (do, 'table'):
- return "<ResultSet for %s>" % do.table
+ if self.__tablename:
+ return "<ResultSet for %s>" % self.__tablename
else:
return "<Unbound/Static ResultSet>"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r7376 - trunk/gnue-common/src/datasources/drivers/Base,
reinhard <=