commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r5609 - trunk/gnue-forms/src/GFObjects


From: reinhard
Subject: r5609 - trunk/gnue-forms/src/GFObjects
Date: Thu, 1 Apr 2004 17:12:02 -0600 (CST)

Author: reinhard
Date: 2004-04-01 17:12:01 -0600 (Thu, 01 Apr 2004)
New Revision: 5609

Modified:
   trunk/gnue-forms/src/GFObjects/GFField.py
Log:
Update list of allowed values automatically if the fk_source for a dropdown is
a detail datasource.


Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py   2004-04-01 20:03:39 UTC (rev 
5608)
+++ trunk/gnue-forms/src/GFObjects/GFField.py   2004-04-01 23:12:01 UTC (rev 
5609)
@@ -185,6 +185,13 @@
       for field in [self.fk_key] + self._fk_descr:
         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:
+        self.__loadAllowedValues (self._fk_datasource.createResultSet ())
+
     if hasattr(self, 'queryDefault') and \
          self.queryDefault != None and \
          self._bound and \
@@ -300,35 +307,34 @@
   #
   # allowedValues
   #
-  def allowedValues(self):
-    if not self._allowedValues and hasattr(self,'_fk_datasource'):
-      rs = self._fk_datasource.createResultSet()
-      more = rs.firstRecord()
-      self._allowedValues = {"":""}
-      self._allowedValuesDescr = [""]
-      self._allowedValuesReverse = {"":""}
-      dropdownSeparator = gConfigForms('DropdownSeparator')
-      while more:
-        try:
-          key = "%s" % rs.current.getField(self.fk_key)
-          descriptions = []
-          for i in self._fk_descr:
-            descriptions.append("%s" % rs.current.getField(i))
-          descr = string.join(descriptions,dropdownSeparator)
+  def __loadAllowedValues (self, resultSet):
+    self._allowedValues = {"":""}
+    self._allowedValuesDescr = [""]
+    self._allowedValuesReverse = {"":""}
+    dropdownSeparator = gConfigForms('DropdownSeparator')
+    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)
 
-          self._allowedValues[key] = descr
-          self._allowedValuesDescr.append(descr)
-          self._allowedValuesReverse[descr] = key
-        except AttributeError:
-          # TODO: What's this for?
-          self._allowedValues[rs.current.getField(self.fk_key)] = None
-        more = rs.nextRecord()
-      GDebug.printMesg (5,'Created for DropDown: %s' % self._allowedValues)
+        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.printMesg (5,'Created for DropDown: %s' % self._allowedValues)
 
+  def allowedValues(self):
     return (self._allowedValues, self._allowedValuesDescr)
 
   def resetForeignKey(self):
-    self._allowedValues = None
-    self.allowedValues()
-
-
+    # does nothing at all, because it's done automatically now
+    # self._allowedValues = None
+    # self.allowedValues()
+    pass





reply via email to

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