You could try writing a custom validation Schema that will select the 
appropriate form (you get type as argument) and call it's validate().

Cheers,
Simon

P.S. I smell another (don't worry Jeff, it would be optional ;))) use 
for generic functions

Roger Rohrbach wrote:
> I'm trying to refactor a controller that adds objects to the database,
> following the DRY (Don't Repeat Yourself) principle.  I've got:
> 
>     class Add(controllers.Root):
>         ...
> 
>         @validate(form=ThisTypeForm)
>         def saveThisTypeOfElement:
>             # do what's needed to save an object of ThisType in the
> database
> 
>         @validate(form=ThatTypeForm)
>         def saveThatTypeOfElement:
>             # do what's needed to save an object of ThatType in the
> database
> 
> It turns out that the method bodies can be the same; the only
> difference is the form--the two objects have different attributes,
> validation requirements etc.  I want something like:
> 
>     class Add(controllers.Root):
>         ...
> 
>         @validate(form=???)
>         def saveElement(type):
>             # do what's needed to save an object of type 'type'
> 
> You see my dilemma: the decorator needs to know which form to associate
> with the method, but that depends on the method's 'type' argument.  I
> can't, for example, call a function:
> 
>         @validate(form=getForm('type'))
> 
> since 'type' is not defined when the decorator is applied.  I can't use
> a callable:
> 
>         @validate(form=getForm)
> 
> because the callable really needs a 'type' argument to get passed at
> runtime.
> 
> Am I just completely missing the point here?  Surely there's a way to
> associate the correct form with my method at runtime?
> 
> 
> > 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to