Is it possible to declare a Mapping Schema with a built-in validator
attached to it?
I'm creating a form has uses Geo coordinates ( lat, lon ) and I'm looking
for the best way to implement these.
Right now, I have the following:
class GeoCoordSchema(colander.MappingSchema):
lat = colander.SchemaNode(
colander.Float(),
missing = colander.null,
validator = validators.latitude # custom validator, allows null or
-90 <> 90
)
lon = colander.SchemaNode(
colander.Float(),
missing = colander.null,
validator = validators.longitude # custom validator, allows null or
-180 <> 180
)
I also implemented a higher level validator, that makes sure that the
coordinates is either null,null
or a valid latitude,longitude pairs.
this works, but I need to remember to add the validator when I declare my
CoordSchema as part of another schema, and I'm sure I'll forget at one
point.
*Questions*
1. is it possible to make a sub-schema optional (missing = null ) but
still have fields within the schema be required? I would interpret that as
"Coordinates are optional, but if you fill them, both latitude and longitude
fields are required". This is essentially what my top level validator is
doing, so I would love to see this be done at the library level. ( I would
have a similar pattern for street addresses, for example)
2. Is there a way to declare the validator as part of the schema class
definition itself? I tried overriding the __init__, adding a property called
validator, etc.
3. The last thing I'm thinking about would be to declare a custom type
called GeoCoord which would handle the lat,lon as a unit, either as a
dictionary or a tuple. Is that possible? I only saw examples of custom types
for simple values (int, string, date, ...)
--
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en.