[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r6696 - trunk/gnue-forms/src/GFObjects
From: |
reinhard |
Subject: |
r6696 - trunk/gnue-forms/src/GFObjects |
Date: |
Wed, 17 Nov 2004 18:09:27 -0600 (CST) |
Author: reinhard
Date: 2004-11-17 18:09:26 -0600 (Wed, 17 Nov 2004)
New Revision: 6696
Modified:
trunk/gnue-forms/src/GFObjects/GFField.py
Log:
Synchronize lookup fields with the underlying resultset.
Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py 2004-11-18 00:05:19 UTC (rev
6695)
+++ trunk/gnue-forms/src/GFObjects/GFField.py 2004-11-18 00:09:26 UTC (rev
6696)
@@ -214,18 +214,8 @@
self._fk_datasource.referenceField(field, None)
# Register as a result set listener
- # if self._fk_datasource.hasMaster (): - not usable before phase 2 init
- if hasattr (self._fk_datasource, 'master') and
self._fk_datasource.master:
- self._fk_datasource.registerResultSetListener
(self.__loadAllowedValues)
- else:
- if (self._fk_datasource.prequery == True):
- self.__loadAllowedValues (self._fk_datasource.createResultSet ())
- else:
- self._allowedValues = {"":""}
- self._allowedValuesDescr = [""]
- self._allowedValuesReverse = {"":""}
+ self._fk_datasource.registerResultSetListener (self.__loadAllowedValues)
-
if hasattr(self, 'queryDefault') and \
self.queryDefault != None and \
self._bound and \
@@ -352,7 +342,7 @@
# If the field is a foreign key, move the result set to the selected value
if hasattr(self,'_fk_datasource'):
- self._fk_datasource.findRecord({self.fk_key: value})
+ self.__fk_resultSet.findRecord({self.fk_key: value})
#
# allowedValues
@@ -368,24 +358,26 @@
len(dropdownSeparator) > 2:
dropdownSeparator = dropdownSeparator[1:-1]
+ array = resultSet.getArray ([self.fk_key] + self._fk_descr)
+ for line in array:
+ key = "%s" % line [0]
+ descr = string.join (["%s" % i for i in line [1:]], dropdownSeparator)
+
+ self._allowedValues[key] = descr
+ self._allowedValuesDescr.append(descr)
+ self._allowedValuesReverse[descr] = key
+
+ # And now, position the resultSet to the correct record according to the
+ # current field content
+ resultSet.findRecord({self.fk_key: self.getValue()})
+
+ # Remember the resultSet for later
+ self.__fk_resultSet = resultSet
- more = resultSet.firstRecord()
- while more:
- try:
- key = "%s" % resultSet.current.getField(self.fk_key)
- descriptions = []
- for i in self._fk_descr:
- descriptions.append("%s" % resultSet.current.getField(i))
- descr = string.join(descriptions,dropdownSeparator)
+ # Register as a listener to resultset movements
+ resultSet.registerListener(self)
- self._allowedValues[key] = descr
- self._allowedValuesDescr.append(descr)
- self._allowedValuesReverse[descr] = key
- except AttributeError:
- # TODO: What's this for?
- self._allowedValues[resultSet.current.getField(self.fk_key)] = None
- more = resultSet.nextRecord()
gDebug (5,'Created for DropDown: %s' % self._allowedValues)
def allowedValues(self):
@@ -404,6 +396,12 @@
self.__loadAllowedValues(resultSet)
pass
+ # This gets called by the resultSet whenever the current record changes.
+ # We want the field to follow the selection then.
+ def currentRecordMoved (self):
+ if self._block._resultSet: # make sure we don't call setValue too early
+ self.setValue (self.__fk_resultSet.current [self.fk_key])
+
def isEditable(self, mode):
if mode == 'query':
return self.queryable and self._block.queryable
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r6696 - trunk/gnue-forms/src/GFObjects,
reinhard <=