commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r9461 - trunk/gnue-forms/src/GFObjects


From: reinhard
Subject: [gnue] r9461 - trunk/gnue-forms/src/GFObjects
Date: Sat, 7 Apr 2007 09:34:42 -0500 (CDT)

Author: reinhard
Date: 2007-04-07 09:34:42 -0500 (Sat, 07 Apr 2007)
New Revision: 9461

Modified:
   trunk/gnue-forms/src/GFObjects/GFBlock.py
   trunk/gnue-forms/src/GFObjects/GFField.py
Log:
Several fixes for dropdowns.


Modified: trunk/gnue-forms/src/GFObjects/GFBlock.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFBlock.py   2007-04-03 06:40:12 UTC (rev 
9460)
+++ trunk/gnue-forms/src/GFObjects/GFBlock.py   2007-04-07 14:34:42 UTC (rev 
9461)
@@ -1044,7 +1044,7 @@
                     del self.__query_values[field]
             else:
                 self.__query_values[field] = value
-            field.value_changed()
+            field.value_changed(value)
 
         elif self.mode == 'init':
             self.__initializing_record[field.field] = value
@@ -1056,7 +1056,7 @@
             self.__resultset.current[field.field] = value
             if field.defaultToLast:
                 self._lastValues[field.field] = value
-            field.value_changed()
+            field.value_changed(value)
 
             field.processTrigger('Post-Change')
             self.processTrigger('Post-Change')

Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py   2007-04-03 06:40:12 UTC (rev 
9460)
+++ trunk/gnue-forms/src/GFObjects/GFField.py   2007-04-07 14:34:42 UTC (rev 
9461)
@@ -356,6 +356,11 @@
         if isinstance(value, datatypes.InvalidValueType):
             raise value.exception
 
+        # Do not convert if it is a lookup, because the datatype refers to the
+        # (lookup) user value, not to the DB value.
+        if hasattr(self, '_GFField__fk_resultSet'):
+            return value
+
         # FIXME: This conversion should be in gnue-common.
         try:
             value = datatypes.convert(value, self.datatype, self.length,
@@ -380,7 +385,10 @@
         """
 
         # Don't convert when in query mode, so :operator: magic works.
-        if self._block.mode != 'query':
+        # Also, do not convert if it is a lookup, because the datatype refers
+        # to the (lookup) user value, not to the DB value.
+        if self._block.mode != 'query' \
+                and not hasattr(self, '_GFField__fk_resultSet'):
             # FIXME: This conversion should be in gnue-common.
             try:
                 value = datatypes.convert(value, self.datatype, self.length,
@@ -414,18 +422,20 @@
     # Notification of value change
     # -------------------------------------------------------------------------
 
-    def value_changed(self):
+    def value_changed(self, new_value):
         """
         Notify the field that the db or query value behind it has changed.
 
         This function gets called whenever the user interface has to be
         updated.
+
+        @param new_value: the new value for this field.
         """
 
         # If the field is a foreign key, move the result set to the
         # selected value.
         if hasattr(self, '_GFField__fk_resultSet'):
-            self.__fk_resultSet.findRecord({self.fk_key: self.__get_value()})
+            self.__fk_resultSet.findRecord({self.fk_key: new_value})
             # This will cause __refresh_ui_current() to be called via
             # __dsCursorMoved
         else:





reply via email to

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