Because Tom is thinking about the next version/design let me emphasize a particular point.
Here are the troubles I got with typesystem object:
When you create something there is no ID. when you update something there is one.
So you have to make two different schemas for quite the same thing, juste because of this ID.
A proposal would be to inherit from the one with no id and add a new ID in properties.
But here comes the second point :
because typesystem does not deal with inheritance like standad python class, it’s really a mess to do it.
Schema is the controller between input and output (user to database, database to user). Validation with input is good (from user to database) but If I use the same schema for output, it will fail if data aren’t validated. That could really make backward changes incompatible, for ex :
an serial nunber is max 12 characters long. thing changes and it becomes new one wich is 10 long.
if you set max_length to 10 for the new type of number for input, you won’t be able to get back the old one with the same schema.
maybe add a validation enable on/off field ?
So actually for CRUD, I use 3 different schemas, hardly inheritted.(Readonly, Create, update)
If I’m wrong on the way to do things, I’d really appreciate some explanation how things should be done.
Here are my thaughts.