Grok插件,用于创建表格表单
项目描述
借助此包,您可以在表单内创建表格。例如,考虑一个文件夹列表,其中第一列有一个复选框,您可以勾选要修改的行。这样的修改包括
编辑
删除
更改工作流状态
megrok.z3cform.tabular基于以下现有megrok包
megrok.layout
megrok.z3ctable
megrok.z3cform.base
megrok.z3cform.ui
示例
首先,我们需要设置一个包含一些对象的容器。
>>> 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
现在我们有一个包含三个对象的容器。现在我们可以为这个容器创建一个表格视图
>>> 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
现在我们可以在容器上调用FormTableView。我们应该看到有三行两列的表格。有一个默认的取消按钮和我们的自定义更改工作流状态按钮。
>>> 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>
此包与megrok.layout配合得很好。有一些额外的BaseClasses可用。请查看测试。
享受...
变更日志
0.2 (2009-10-26)
更改项目的描述。
0.1 (2009-10-26)
初始发布
项目详情
关闭
megrok.z3cform.tabular-0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b5396b7eda4ea5407bf3172c5244839de8eb8752b7153e032cf3a31961676c28 |
|
MD5 | 6121c55a8035a1b17b14a01810724078 |
|
BLAKE2b-256 | 8ea235d355e557821e7951f98616b2999e143d8f6fd15a810e06ee5b83ef1789 |