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
-~----------~----~----~----~------~----~------~--~---