Hmm, I need to catch up on what happened to validate during the sprint, and perhaps stop banging my head against a wall with 2.4 compatability issues that definitely walk the dependency chain back up to pylons...
I think there was a notion to make validate into a "real" decorator with no particular hooks in the TurboGears controller's __call__ method. That would make it easy enough to replace the TG validator with custom validators from tosca, or wherever. Max Ishenko also had some ideas on how he would like TG validators to be better, coming from newforms I think. I think Alberto did a bit of hacking around, but I don't think Max made any validator changes.... I'll look into this more and see what's happening. But I'm definitely open to ideas about how to make validation better in TurboGears 2... So, if there's something missing from the current version that was in there before, feel free to add it back. ;) And if there's something that it should be doing better, (like taking form as a keyword param as mentioned in another thread), I'm open to making those changes too. --Mark Ramm On Jan 23, 2008 10:49 PM, percious <[EMAIL PROTECTED]> wrote: > > I was wondering why this code has been removed. I find it very > usefull. > > #TODO: Consider depricating this in favor of pylons validate decorator > class validate(object): > """Validate regesters validator on the decorated function. > > :Parameters: > validator > Valdators > error_handler > Assign error handler > """ > def __init__(self, validator=None, error_handler=None, **kw): > if not hasattr(validator, 'to_python') and hasattr(validator, > 'validator'): > validator = validator.validator > elif kw: > assert validator is None, \ > 'validator must not be specified with additional > keyword arguments' > validator = kw > if not isinstance(validator, formencode.Schema): > validator = _schema(validator) > self.validator = validator > self.error_handler = error_handler > > def __call__(self, func): > deco = TGDecoration.get_decoration(func) > deco.validator = self.validator > deco.error_handler = self.error_handler > return func > > > The way I use this code is to retrieve the target form from my widget > cache in the following manner: > > class DBMechanicValidator(object): > @property > def validator(self): > if not pylons.request.method == 'POST': > return func(self, *args, **kwargs) > if post_only: > params = pylons.request.POST.copy() > else: > params = pylons.request.params.copy() > > sprocket = self.sprockets[params['dbsprockets_id']] > form = sprocket.view.widget > return form > > Now, maybe I could write a formencode.Schema that does the same thing, > but i think I need to be pointed in the right direction to get that > working. > > cheers. > > > -- Mark Ramm-Christensen email: mark at compoundthinking dot com blog: www.compoundthinking.com/blog --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears Trunk" 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/turbogears-trunk?hl=en -~----------~----~----~----~------~----~------~--~---
