Skip to content

Instantly share code, notes, and snippets.

@dwt
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dwt/cad8bdc730d7a58cf268 to your computer and use it in GitHub Desktop.
Save dwt/cad8bdc730d7a58cf268 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import colander
import deform
from deform.widget import TextAreaWidget, SequenceWidget
class AnswerEditSchema(colander.Schema):
title = colander.SchemaNode(
colander.String(),
validator=colander.Length(1, 384),
title=u"Title",
missing=u'',
widget=deform.widget.TextAreaWidget(),
)
class QuestionEditSchema(colander.Schema):
title = colander.SchemaNode(
colander.String(),
validator=colander.Length(2),
title=u"Title",
widget=deform.widget.TextAreaWidget(),
)
answers = colander.SchemaNode(
colander.Sequence(),
AnswerEditSchema(
title=u"Answer",
name=u"answer"
),
widget=SequenceWidget(min_len=2),
title=u"Answers",
)
schema = QuestionEditSchema().bind()
form = deform.Form(schema=schema)
post_values = [('_charset_', u'UTF-8'), ('title', u'english title'), ('is_active', u'true'), ('max_seconds_to_answer', u'42'), ('__start__', u'topics:sequence'), ('topics', u'40'), ('__end__', u'topics:sequence'), ('__start__', u'answers:sequence'), ('__start__', u':mapping'), ('title', u''), ('id', u'1039'), ('is_correct', u'true'), ('__end__', u':mapping'), ('__start__', u':mapping'), ('title', u'english wrong answer'), ('id', u'1040'), ('__end__', u':mapping'), ('__end__', u'answers:sequence'), ('__start__', u'assets:sequence'), ('__end__', u'assets:sequence'), ('keywords', u''), ('feedback', u''), ('__start__', u'references:sequence'), ('__end__', u'references:sequence'), ('submit', u'submit')]
app_struct = form.validate(post_values)
print 'app_struct:\t', app_struct
app_struct['answers'][0]['title'] = 'fnord1'
app_struct['title'] = 'fnord2'
print 'new app struct:\t', app_struct
rendered = form.render(app_struct)
assert 'fnord1' in rendered, "form.render() does not respect app_struct['answers'][0]['title']"
assert 'fnord2' in rendered, "form.render() does not respect app_structv['title']"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment