Author: phd
Date: 2010-08-31 10:48:57 -0600 (Tue, 31 Aug 2010)
New Revision: 4233
Modified:
SQLObject/trunk/docs/News.txt
SQLObject/trunk/docs/SQLObject.txt
SQLObject/trunk/sqlobject/col.py
SQLObject/trunk/sqlobject/tests/test_validation.py
Log:
validator2 was added to all columns.
Modified: SQLObject/trunk/docs/News.txt
===================================================================
--- SQLObject/trunk/docs/News.txt 2010-08-31 15:51:36 UTC (rev 4232)
+++ SQLObject/trunk/docs/News.txt 2010-08-31 16:48:57 UTC (rev 4233)
@@ -16,6 +16,10 @@
* The lists of columns/indices/joins are now sorted according to the order
of creation.
+* validator2 was added to all columns; it is inserted at the beginning of
+ the list of validators, i.e. its ``from_python()`` method is called
+ first, ``to_python()`` is called last, after all validators in the list.
+
SQLObject 0.13.0
================
Modified: SQLObject/trunk/docs/SQLObject.txt
===================================================================
--- SQLObject/trunk/docs/SQLObject.txt 2010-08-31 15:51:36 UTC (rev 4232)
+++ SQLObject/trunk/docs/SQLObject.txt 2010-08-31 16:48:57 UTC (rev 4233)
@@ -1083,6 +1083,10 @@
the beginnig of the list to the end; ``to_python()`` in the reverse
order. That said, ``from_python()`` method of this validator is called
last, after all validators in the list; ``to_python()`` is called first.
+`validator2`:
+ Another validator. It is inserted in the beginning of the list of the
+ list of validators, i.e. its ``from_python()`` method is called first;
+ ``to_python()`` last.
.. _formencode: http://formencode.org/
.. _validator: http://formencode.org/Validator.html
Modified: SQLObject/trunk/sqlobject/col.py
===================================================================
--- SQLObject/trunk/sqlobject/col.py 2010-08-31 15:51:36 UTC (rev 4232)
+++ SQLObject/trunk/sqlobject/col.py 2010-08-31 16:48:57 UTC (rev 4233)
@@ -97,6 +97,7 @@
sqlType=None,
columnDef=None,
validator=None,
+ validator2=None,
immutable=False,
cascade=None,
lazy=False,
@@ -193,11 +194,13 @@
self.alternateMethodName = alternateMethodName
_validators = self.createValidators()
- if _validators:
- if validator: _validators.append(validator)
+ if validator: _validators.append(validator)
+ if validator2: _validators.insert(0, validator2)
+ _vlen = len(_validators)
+ if _vlen == 1:
+ self.validator = _validators[0]
+ elif _vlen > 1:
self.validator = compound.All.join(_validators[0], *_validators[1:])
- else:
- self.validator = validator
self.noCache = noCache
self.lazy = lazy
# this is in case of ForeignKey, where we rename the column
Modified: SQLObject/trunk/sqlobject/tests/test_validation.py
===================================================================
--- SQLObject/trunk/sqlobject/tests/test_validation.py 2010-08-31 15:51:36 UTC (rev 4232)
+++ SQLObject/trunk/sqlobject/tests/test_validation.py 2010-08-31 16:48:57 UTC (rev 4233)
@@ -6,6 +6,23 @@
## Validation/conversion
########################################
+class SOTestValidator(validators.Validator):
+ def to_python(self, value, state):
+ if value:
+ self.save_value.append(value)
+ return 1
+ return value
+
+ def from_python(self, value, state):
+ if value:
+ self.save_value.append(value)
+ return 2
+ return value
+
+validator1 = SOTestValidator(save_value=[])
+validator2 = SOTestValidator(save_value=[])
+
+
class SOValidation(SQLObject):
name = StringCol(validator=validators.PlainText(),
@@ -17,6 +34,7 @@
name6 = BoolCol(default=None)
name7 = UnicodeCol(default=None)
name8 = IntCol(default=None)
+ name9 = IntCol(validator=validator1, validator2=validator2, default=0)
class SOValidationTest(object):
def __init__(self, value):
@@ -78,3 +96,9 @@
def test_emptyValue(self):
t = SOValidation(name5={})
assert t.name5 == {}
+
+ def test_validator2(self):
+ t = SOValidation(name9=1)
+ t = SOValidation(name9=2)
+ assert validator1.save_value == [2, 2, 2, 2, 2, 2]
+ assert validator2.save_value == [1, 1, 1, 2, 1, 1]
|