On Jul 12, 2008, at 9:40 AM, kindly wrote:
> > I have just started working on "another" kind of declarative layer for > SQLalchemy. Infact it is more like a domain specific language for > setting up basic form orientated databases for small charities in > order to provide viable alternative to Access for simple information > storage needs. The details of which I will not go into now. > > My approach for validation is to have a function within each ORM > object, say obj.validate(). This goes off checks external metadata > (not sqlalchemy metadata) and runs the checks on that object using > formencode. If the form is a different to the database fields (say > composite inputs) the object holds the inputs and can validate both > these and the actual parameter they create (useful for unique > validations). I will not use the full power of formencode scemas but > will use them for composite validations within a form. I will then > collect all the validation errors from all the validators and return > them to the controller. > > I have overwritten the Sessions session.add method to perform these > checks so as not flush until there are no validation errors, and if > there are, return a dict of the errors for the controller. > > I just want to know if anyone can think of any reasons that this is a > terrible idea, based on a clearer understanding of sqlalchemy orm > objects then myself? as to me unless something particuarly mysterious > happens to the objects, or the session will break in some way if you > override add, it should be fine. I dont think overriding add() will break anything, but having it return a validation value changes the usage pattern of Session quite a bit. I'd suggest looking at SessionExtension, in combination with a before_flush() hook as a possibly more appropriate place to do object validation. Validation errors could be associated with the exception raised by your validation (which is how I understand a formencode Schema to do it too). --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---