While testing the dTextBox.py I entered several spaces into the DecimalText
control. I discovered that I can cause an error to occur:
Traceback (most recent call last):
File "/home/johnf/downloads/dabo/dabo/ui/uiwx/dPemMixin.py", line 524, in
__onWxGotFocus
self.raiseEvent(dEvents.GotFocus, evt)
File "/home/johnf/downloads/dabo/dabo/ui/uiwx/dPemMixin.py", line 925, in
raiseEvent
super(dPemMixin, self).raiseEvent(eventClass, nativeEvent, *args,
**kwargs)
File "/home/johnf/downloads/dabo/dabo/lib/eventMixin.py", line 92, in
raiseEvent
bindingFunction(event)
File "/home/johnf/downloads/dabo/dabo/ui/dControlMixinBase.py", line 19, in
__onGotFocus
self.Form.activeControlValid() ## make sure prior control's value has
been flushed.
File "/home/johnf/downloads/dabo/dabo/ui/uiwx/dFormMixin.py", line 272, in
activeControlValid
if not hasattr(ac, "_oldVal") or ac._oldVal != ac.Value:
File "/home/johnf/downloads/dabo/dabo/ui/uiwx/dTextBoxMixin.py", line 626,
in _getValue
convertedVal = self.convertStringValueToDataType(strVal, dataType)
File "/home/johnf/downloads/dabo/dabo/ui/uiwx/dTextBoxMixin.py", line 459,
in convertStringValueToDataType
retVal = decimal.DefaultContext.quantize(decimal.Decimal(strVal), _oldVal)
File "/usr/lib/python2.5/decimal.py", line 614, in __new__
self._sign, self._int, self._exp = context._raise_error(ConversionSyntax)
File "/usr/lib/python2.5/decimal.py", line 2325, in _raise_error
raise error, explanation
I traced it and found that the spaces were in the value that was being
processed by "dTextBoxMixin.convertStringValueToDataType()" for a
decimal.Decimal. This of course caused the traceback.
If the data type is "decimal.Decimal" is should never have leading or trailing
spaces I suggest the following minor change:
strVal=strVal.strip()
below is the complete code:
elif (dataType == decimal.Decimal) and self.StrictNumericEntry:
try:
_oldVal = self._oldVal
except AttributeError:
_oldVal = None
strVal=strVal.strip()
try:
if type(_oldVal) == decimal.Decimal:
# Enforce the precision as previously set programatically
retVal = decimal.DefaultContext.quantize(decimal.Decimal(strVal),
_oldVal)
else:
retVal = decimal.Decimal(strVal)
except ValueError:
raise ValueError, _("Can't convert to decimal.")
--
John Fabiani
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: http://leafe.com/archives/byMID/[EMAIL PROTECTED]