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

Reply via email to