self.chained_validators = chained_validators
return ordered_result
+ def _convert_from_python(self, value, state):
+ # store original pre- and chained validators
+ pre_validators = self.pre_validators
+ chained_validators = self.chained_validators[:]
+ # apply chained validators
+ chained = chained_validators[:]
+ chained.reverse()
+ for validator in chained:
+ value = validator.from_python(value, state)
+ # tempoarly remove pre- and chained validators
+ self.pre_validators = []
+ self.chained_validators = []
+ # apply original _convert_from_python method
+ try:
+ result = formencode.Schema._convert_from_python(self, value, state)
+ ordered_result = collections.OrderedDict()
+ for key in value.iterkeys():
+ ordered_result[key] = result[key]
+ # apply pre_validators
+ pre = pre_validators[:]
+ pre.reverse()
+ for validator in pre:
+ ordered_result = validator.from_python(ordered_result, state)
+ finally:
+ # resore original pre- and chained_validators
+ self.pre_validators = pre_validators
+ self.chained_validators = chained_validators
+ return ordered_result
+
class NoneValidator(formencode.FancyValidator):
"""Takes a validator and makes it possible that empty strings are mapped to None."""