def validate(self, value):
    if self.empty(value):
      if self.required:
        raise BadValueError('Property %s is required' % self.name)
    else:
      if self.choices:
        if value not in self.choices:
          raise BadValueError('Property %s is %r; must be one of %r' %
                              (self.name, value, self.choices))
    if self.validator is not None:
      self.validator(value)
    return value
Call the given callback after delay seconds. If delay is zero, 
dataset/ETHPy150Open AppScale/appscale/AppServer/google/appengine/ext/db/__init__.py/Property.validate--crossover with--dataset/ETHPy150Open zoofIO/flexx/flexx/app/funcs.py/call_later