From: Christopher Allan Webber Date: Wed, 29 May 2013 20:57:58 +0000 (-0500) Subject: Additional hook tips! Documentation on how to modify a wtforms form. X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=baf2c1c96ec4dbcbb74518852ffdf516d670347c;p=mediagoblin.git Additional hook tips! Documentation on how to modify a wtforms form. This commit sponsored by Gian-Maria Daffré. Thank you! --- diff --git a/docs/source/pluginwriter/api.rst b/docs/source/pluginwriter/api.rst index 33bb70c4..2a7f3c2d 100644 --- a/docs/source/pluginwriter/api.rst +++ b/docs/source/pluginwriter/api.rst @@ -193,3 +193,36 @@ object, so you can access this in your templates like: A funny bunny + + +Additional hook tips +-------------------- + +This section aims to explain some tips in regards to adding hooks to +the MediaGoblin repository. + +WTForms hooks +============= + +We haven't totally settled on a way to tranform wtforms form objects, +but here's one way. In your view:: + + from mediagoblin.foo.forms import SomeForm + + def some_view(request) + form_class = hook_transform('some_form_transform', SomeForm) + form = form_class(request.form) + +Then to hook into this form, do something in your plugin like:: + + import wtforms + + class SomeFormAdditions(wtforms.Form): + new_datefield = wtforms.DateField() + + def transform_some_form(orig_form): + class ModifiedForm(orig_form, SomeFormAdditions) + return ModifiedForm + + hooks = { + 'some_form_transform': transform_some_form}