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:
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.