On Tue, Jul 01, 2008 at 03:17:14PM -0500, Christopher Singley wrote: > How about something like this?
It looks good. I will test it and add to the trunk. Thank you! > class DecimalStringValidator(DecimalValidator): > def __init__(self, *args, **kw): > size = kw.pop('size', NoDefault) > precision = kw.pop('precision', NoDefault) > assert precision >= 0, \ > "You must give a precision argument as a positive integer" > self.precision = Decimal(10) ** (-1 * int(precision)) > super(DecimalStringValidator, self).__init__(*args, **kw) > > def to_python(self, value, state): > value = super(DecimalStringValidator, self).to_python(value, state) > if isinstance(value, Decimal): > value = value.quantize(self.precision) > return value > > def from_python(self, value, state): > value = super(DecimalStringValidator, self).from_python(value, state) > if isinstance(value, Decimal): > value = value.quantize(self.precision) > return value > > class SODecimalStringCol(SOStringCol): > def __init__(self, **kw): > self.size = kw.pop('size', NoDefault) > assert self.size >= 0, \ > "You must give a size argument as a positive integer" > self.precision = kw.pop('precision', NoDefault) > assert self.precision >= 0, \ > "You must give a precision argument as a positive integer" > kw['length'] = int(self.size) + int(self.precision) > self.quantize = kw.pop('quantize', False) > assert isinstance(self.quantize, bool), \ > "quantize argument must be Boolean True/False" > super(SODecimalStringCol, self).__init__(**kw) > > def createValidators(self): > validators = super(SODecimalStringCol, self).createValidators() > if self.quantize: > validators.insert(0, > DecimalStringValidator(precision=self.precision)) > > class DecimalStringCol(StringCol): > baseClass = SODecimalStringCol Oleg. -- Oleg Broytmann http://phd.pp.ru/ [EMAIL PROTECTED] Programmers don't die, they just GOSUB without RETURN. ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ sqlobject-discuss mailing list sqlobject-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss