[Zope-dev] Object schema field validation

Christian Theune ct at gocept.com
Tue Dec 1 07:15:35 EST 2009


Hi,

On 11/29/2009 12:02 PM, Markus Kemmerling wrote:
> I stumbled upon a problem with Object schema field validation. The problem occurs, e.g., if the the Object field's schema itself contains a Choice field with a dynamically computed vocabulary. For the latter to validate correctly the field must be bound to the instance. But the Object field validation code in zope.schema._fields._validate_fields validates the attributes of the Object field instance without binding them first:
>
> def _validate_fields(schema, value, errors=None):
>      ...
>              try:
>                  attribute = schema[name]
>                  if IField.providedBy(attribute):
>                      # validate attributes that are fields
>                      attribute.validate(getattr(value, name))
>              except ValidationError, error:
>                  ...
>
> Replacing the line
>
>      attribute.validate(getattr(value, name))
>
> with
>
>      field = attribute.bind(value)
>      field.validate(getattr(value, name))
>
> fixes the problem.
>
> Looks like a bug to me.

Yeah, sounds like it. Would you mind reporting this to the bug tracker 
and put the bug number into this thread so people can later find it in 
the archive?

Thanks and kind regards,
Christian

-- 
Christian Theune · ct at gocept.com
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 0 · fax +49 345 1229889 1
Zope and Plone consulting and development



More information about the Zope-Dev mailing list