Crud forms for Grok, using z3c.form
Project description
Crud
This module gives you an abstract base class to make CRUD forms with. These forms give you by default a tabular view of the objects, where attributes of the object can be edited in-place. Please refer to the ICrudForm interface for more details.
>>> from megrok.z3cform.crud import crud
Form registration
Models
We set up some models to serve as a form context:
>>> import grokcore.component as grok >>> from zope import interface, schema >>> class IPerson(interface.Interface): ... name = schema.TextLine(title=u"Name") ... age = schema.Int(title=u"Age") >>> class Person(grok.Context): ... grok.implements(IPerson) ... name = schema.fieldproperty.FieldProperty(IPerson['name']) ... age = schema.fieldproperty.FieldProperty(IPerson['age']) ... ... def __init__(self, name, age): ... self.name = name ... self.age = age >>> class IPersonContainer(interface.Interface): ... pass >>> class PersonContainer(dict): ... grok.implements(IPersonContainer)
For this test, we take the the name of our persons as keys in our storage:
>>> storage = PersonContainer() >>> storage['Peter'] = Person(u'Peter', 16) >>> storage['Martha'] = Person(u'Martha', 32)
We declare the Form with the help of megrok.z3cform.base. It’s very similar to a grok.View:
>>> import megrok.z3cform.base as z3cform >>> class TestForm(crud.CrudForm): ... grok.context(IPersonContainer) ... ... update_schema = IPerson ... ... def get_items(self): ... return sorted(storage.items(), key=lambda x: x[1].name) ... ... def add(self, data): ... person = Person(**data) ... storage[str(person.name)] = person ... return person ... ... def remove(self, (id, item)): ... del storage[id]
Grokking and querying
We let Grok register the component:
>>> grok.testing.grok_component('form', TestForm) True
Now, we can query it normally:
>>> from zope.publisher.browser import TestRequest >>> request = TestRequest() >>> from zope.component import getMultiAdapter >>> myform = getMultiAdapter((storage, request), name="testform") >>> myform <TestForm object at ...> >>> print myform() <form action="http://127.0.0.1" method="post" enctype="multipart/form-data" class="form-testform"> ...
Changelog
0.1
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file megrok.z3cform.crud-0.1.tar.gz
.
File metadata
- Download URL: megrok.z3cform.crud-0.1.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0b0a1a91af3611b609e605c87cb7cbc02c74a6c30383e31f1b60c3322e2c4b2 |
|
MD5 | f5d603f9aa8f9f10b8bbf0af6a07f061 |
|
BLAKE2b-256 | 038560113819a451d8051dae35932fb79f8d74c060a9320c427eeecff2748ce5 |