megrok.z3cform.tabular 0.2
Grok addon for createing tabular forms
With the help of this package you can create tables inside forms. Think on a folder listing where you have a checkbox on the first column and you can check the rows you want to modify. Such modifcations are for example:
- edit
- delete
- change workflow state
megrok.z3cform.tabular is based on these existing megrok packages:
- megrok.layout
- megrok.z3ctable
- megrok.z3cform.base
- megrok.z3cform.ui
Example
First we have to setup a container with some objects.
>>> from zope.app.testing.functional import getRootFolder >>> root = getRootFolder()>>> from zope.app.container import btree >>> class Container(btree.BTreeContainer): ... """Sample container.""" ... __name__ = u'container' >>> container = Container()>>> root['container'] = container>>> class Content(object): ... """Sample content.""" ... def __init__(self, title, number): ... self.title = title ... self.number = number>>> container[u'first'] = Content('First', 1) >>> container[u'second'] = Content('Second', 2) >>> container[u'third'] = Content('Third', 3)>>> len(container) 3
Ok now we have a container with three objects in it. Now we can create a tabular view for this container:
>>> from megrok.z3cform.tabular import FormTable >>> import grokcore.component as grok >>> from megrok.z3cform.base import button, extends>>> class FormTableView(FormTable): ... grok.context(Container) ... extends(FormTable) ... ... @button.buttonAndHandler(u'ChangeWorkflowState') ... def handleChangeWorkflowState(self, action): ... print 'success' ... ... def render(self): ... return self.renderFormTable()>>> grok.testing.grok_component('formtableview', FormTableView) True>>> from megrok.z3ctable import table, CheckBoxColumn, NameColumn >>> class CheckBox(CheckBoxColumn): ... grok.name('checkBox') ... grok.context(Container) ... table(FormTableView)>>> grok.testing.grok_component('checkbox', CheckBox) True>>> class Name(NameColumn): ... grok.name('name') ... grok.context(Container) ... table(FormTableView)>>> grok.testing.grok_component('name', Name) True
Ok now we can call the FormTableView on the container. We should see a table with three rows and two columns. There is a default Cancel button and our custom ChangeWorkflowState button.
>>> from zope.publisher.browser import TestRequest >>> request = TestRequest()>>> from zope.component import getMultiAdapter >>> formtableview = getMultiAdapter((container, request), name="formtableview") >>> formtableview <FormTableView 'formtableview'>>>> formtableview.update() >>> print formtableview() <form action="http://127.0.0.1" method="post" enctype="multipart/form-data" class="edit-form" name="formTable" id="formTable"> <div class="viewspace"> <div> <div class="tabluarTable"> <table class="contents"> <thead> <tr> <th>Name</th> <th>X</th> </tr> </thead> <tbody> <tr class="even"> <td>first</td> <td><input type="checkbox" class="checkbox-widget" name="formTable-checkBox-1-selectedItems" value="first" /></td> </tr> <tr class="odd"> <td>second</td> <td><input type="checkbox" class="checkbox-widget" name="formTable-checkBox-1-selectedItems" value="second" /></td> </tr> <tr class="even"> <td>third</td> <td><input type="checkbox" class="checkbox-widget" name="formTable-checkBox-1-selectedItems" value="third" /></td> </tr> </tbody> </table> </div> <div class="tabluarForm"> </div> </div> </div> <div> <div class="buttons"> <input id="formTable-buttons-cancel" name="formTable.buttons.cancel" class="submit-widget button-field" value="Cancel" type="submit" /> <input id="formTable-buttons-changeworkflowstate" name="formTable.buttons.changeworkflowstate" class="submit-widget button-field" value="ChangeWorkflowState" type="submit" /> </div> </div> </form>
This package works nicely with megrok.layout. There are some additional BaseClasses available. Please take a look on the tests.
Enjoy...
Changelog
0.2 (2009-10-26)
- Change the description of the project.
0.1 (2009-10-26)
- Initial release
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| megrok.z3cform.tabular-0.2.tar.gz (md5) | Source | 2009-10-26 | 8KB | 923 | |
- Author: Christian Klinger
- Keywords: grok z3c.form megrok.z3cform.wizard
- License: GPL
- Categories
- Package Index Owner: cklinger
- DOAP record: megrok.z3cform.tabular-0.2.xml
