Author: reinhard Date: 2007-06-22 08:24:14 -0500 (Fri, 22 Jun 2007) New Revision: 9733
Modified: trunk/gnue-forms/src/GFObjects/GFField.py Log: Convert default values and query default values of fields to correct datatype. Modified: trunk/gnue-forms/src/GFObjects/GFField.py =================================================================== --- trunk/gnue-forms/src/GFObjects/GFField.py 2007-06-21 12:58:43 UTC (rev 9732) +++ trunk/gnue-forms/src/GFObjects/GFField.py 2007-06-22 13:24:14 UTC (rev 9733) @@ -33,7 +33,7 @@ __all__ = ['GFField', 'FKeyMissingError', 'LengthNotAllowedError', 'DataSourceNotFoundError', 'InvalidDBValueError', - 'InvalidFieldValueError'] + 'InvalidFieldValueError', 'InvalidDefaultValueError'] # ============================================================================= @@ -174,7 +174,11 @@ elif self.case == 'lower': self._lowercase = True - default = self.__get_default () + try: + default = datatypes.convert(self.__get_default(), self.datatype, + self.length, self.scale) + except ValueError, datatypes.ConversionError: + raise InvalidDefaultValueError(self, self.__get_default()) if not hasattr(self, 'field') or not len(self.field): self.field = "__GNUe__%s" % self.name @@ -226,8 +230,13 @@ raise MinimumLengthNotAllowedError(self) if hasattr(self, 'queryDefault') and self.queryDefault != None and \ - self._bound and len(self.queryDefault): - block._queryDefaults[self] = self.queryDefault + self._bound and len(self.queryDefault): + try: + self._block._queryDefaults[self] = datatypes.convert( + self.queryDefault, self.datatype, self.length, + self.scale) + except ValueError, datatypes.ConversionError: + raise InvalidDefaultValueError(self, self.queryDefault) # ------------------------------------------------------------------------- @@ -816,3 +825,17 @@ ) % { 'value': value, 'field': field}) + +# ============================================================================= + +class InvalidDefaultValueError(GParser.MarkupError): + """ + The field definition contains an invalid default value or default query + value for a field. + """ + def __init__(self, field, value): + GParser.MarkupError.__init__(self, u_( + "Invalid default value '%(value)s' for field '%(name)s'" + ) % { + 'value': value, + 'name': field.name}, field._url, field._lineNumber) _______________________________________________ commit-gnue mailing list commit-gnue@gnu.org http://lists.gnu.org/mailman/listinfo/commit-gnue