Additional hook tips! Documentation on how to modify a wtforms form.
authorChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 29 May 2013 20:57:58 +0000 (15:57 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 29 May 2013 20:57:58 +0000 (15:57 -0500)
This commit sponsored by Gian-Maria Daffré.  Thank you!

docs/source/pluginwriter/api.rst

index 33bb70c4fa10e96c0918e2508c3caf06ebe18713..2a7f3c2dcbadccddd13a4dc92a58c9e081f1d578 100644 (file)
@@ -193,3 +193,36 @@ object, so you can access this in your templates like:
 
   <img alt="A funny bunny"
        src="{{ request.staticdirect('images/funnybunny.png', 'mystaticname') }}" />
+
+
+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}