Thread: [SQLObject] DecimalValidator patch in col.py
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Kevin R. <jus...@gm...> - 2009-03-27 15:58:43
|
I have a patch for a bug I found in the DecimalValidator class in col.py. I am getting messages saying no attribute 'name' of DecimalValidator. This is is traceable to col.py, about line 1300: def from_python(self, value, state): if value is None: return None if isinstance(value, float): value = str(value) if isinstance(value, (str, unicode)): connection = state.soObject._connection if hasattr(connection, "decimalSeparator"): value = value.replace(connection.decimalSeparator, ".") try: return Decimal(value) except: raise validators.Invalid("can not parse Decimal value '%s' in the DecimalCol from '%s'" % (value, getattr(state, 'soObject', '(unknown)')), value, state) if not isinstance(value, (int, long, Decimal, sqlbuilder.SQLExpression)): raise validators.Invalid("expected a decimal in the DecimalCol '%s', got %s %r instead" % \ (getattr(self, 'name', '(unknown name)'), type(value), value), value, state) return value The change is in the next-to-last line (the raise() call). The problem, as I mentioned, is DecimalValidator having no attribute 'name' (a reference to self.name). Changing self.name to getattr(self, 'name', '(unknown name)')eliminates this problem and preserves a nice error message showing you what the problem is. Likewise, there’s a line above this in the to_python() method that could/should be changed similarly. Sorry, I don’t know how to create a test for this, my code is rather complex. -- Kevin |
From: Oleg B. <ph...@ph...> - 2009-03-27 16:17:15
|
On Fri, Mar 27, 2009 at 10:58:37AM -0500, Kevin Rice wrote: > I have a patch for a bug I found in the DecimalValidator class in col.py. I > am getting messages saying no attribute 'name' of DecimalValidator. This is > is traceable to col.py, about line 1300: Thank you for spotting this. I'll fix it but in a different manner - by passing correct name to the DecimalValidator. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2009-03-27 16:31:59
|
On Fri, Mar 27, 2009 at 07:17:03PM +0300, Oleg Broytmann wrote: > On Fri, Mar 27, 2009 at 10:58:37AM -0500, Kevin Rice wrote: > > I have a patch for a bug I found in the DecimalValidator class in col.py. I > > am getting messages saying no attribute 'name' of DecimalValidator. This is > > is traceable to col.py, about line 1300: > > Thank you for spotting this. I'll fix it but in a different manner - by > passing correct name to the DecimalValidator. Fixed in the revisions 3636-3638 - branches 0.9, 0.10 and the trunk. Will be in the next round of releases. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |