Pylons FormEncode @validate decorator pass parameters into re-render action

Posted by joelbw on Stack Overflow See other posts from Stack Overflow or by joelbw
Published on 2010-01-13T17:30:08Z Indexed on 2010/03/18 16:01 UTC
Read the original article Hit count: 765

Filed under:
|
|
|

I am attempting to use the validate decorator in Pylons with FormEncode and I have encountered an issue. I am attempting to validate a form on a controller action that requires parameters, and if the validation fails, the parameters aren't passed back in when the form is re-rendered. Here's an example.

def question_set(self, id):
    c.question_set = meta.Session.query(QuestionSet).filter_by(id=id).first()
    c.question_subjects = meta.Session.query(QuestionSubject).order_by(QuestionSubject.name).all()
    return render('/derived/admin/question_set.mako')

This is the controller action that contains my form. The form will add questions to an existing question set, which is identified by id. My add question controller action looks like this:

@validate(schema=QuestionForm(), form='question_set', post_only=True)
def add_question(self):
    stuff...

Now, if the validation fails FormEncode attempts to redisplay the question_set form, but it does not pass the id parameter back in, so the question set form will not render. Is it possible to pass the id back in with the @validate decorator, or do I need to use a different method to achieve what I am attempting to do?

© Stack Overflow or respective owner

Related posts about pylons

Related posts about formencode