from formencode import validators, Schema
from formencode.foreach import ForEach
from formencode.variabledecode import NestedVariables
+from formencode.schema import SimpleFormValidator
from mailer import Message
amount = validators.Number(not_empty=True)
+def validate_state(value_dict, state, validator):
+ if all(s['amount'] == 0 for s in value_dict['shares']):
+ return {'shares-0.amount': 'Need at least one non-zero share'}
+ValidateNotAllZero = SimpleFormValidator(validate_state)
+
+
class ExpenditureSchema(Schema):
"Validate an expenditure."
allow_extra_fields = False
description = validators.UnicodeString()
date = validators.DateConverter()
shares = ForEach(ShareSchema)
+ chained_validators = [ValidateNotAllZero]
class SpendController(BaseController):