[Checkins] SVN: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/ Further Changes
Christian Klinger
cklinger at novareto.de
Wed Jul 1 10:38:16 EDT 2009
Log message for revision 101367:
Further Changes
Changed:
U megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/__init__.py
U megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/components.py
U megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_field.py
U megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_layout.py
A megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/utils.py
-=-
Modified: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/__init__.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/__init__.py 2009-07-01 10:22:00 UTC (rev 101366)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/__init__.py 2009-07-01 14:38:16 UTC (rev 101367)
@@ -4,3 +4,5 @@
from components import WidgetTemplate
from skin import FormLayer, TableLayer
from directives import field
+from z3c.form import widget, field, button, action
+from utils import apply_data_event
Modified: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/components.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/components.py 2009-07-01 10:22:00 UTC (rev 101366)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/components.py 2009-07-01 14:38:16 UTC (rev 101367)
@@ -67,7 +67,6 @@
render method in grok), but we have to call the template
correctly.
"""
-
if self.template is None:
self.template = component.getMultiAdapter((self, self.request), IPageTemplate)
return self._render_template()
Modified: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_field.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_field.py 2009-07-01 10:22:00 UTC (rev 101366)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_field.py 2009-07-01 14:38:16 UTC (rev 101367)
@@ -2,24 +2,47 @@
>>> manfred = Mammoth()
>>> from zope import component
+ >>> from zope.interface import alsoProvides
>>> from zope.publisher.browser import TestRequest
>>> request = TestRequest()
+ >>> alsoProvides(request, FormFieldSkin)
- Check that fields have been created on the edition page:
+Check that fields have been created on the edition page:
>>> view = component.getMultiAdapter((manfred, request), name='edit')
>>> len(view.fields)
2
>>> [field.__name__ for field in view.fields.values()]
['name', 'age']
-
+
+Now what happens with the render and call functions?
+
+ >>> #view.render()
+
+Does the field functions (omit, select, ...) work
+
+ >>> index = component.getMultiAdapter((manfred, request), name='index')
+ >>> len(index.fields)
+ 1
+
+ >>> 'name' in index.fields.keys()
+ True
+
"""
import grok
from zope import interface, schema
from zope.schema.fieldproperty import FieldProperty
from megrok import z3cform
+from z3c.form import field
+class FormFieldSkin(z3cform.FormLayer):
+ grok.skin('formfieldskin')
+
+grok.layer(FormFieldSkin)
+
+
+
class IMammoth(interface.Interface):
name = schema.TextLine(title=u"Name")
@@ -36,7 +59,7 @@
pass
class Index(z3cform.DisplayForm):
- pass
+ fields = field.Fields(IMammoth).omit('age')
def test_suite():
from zope.testing import doctest
Modified: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_layout.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_layout.py 2009-07-01 10:22:00 UTC (rev 101366)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_layout.py 2009-07-01 14:38:16 UTC (rev 101367)
@@ -9,7 +9,7 @@
>>> request = TestRequest()
>>> alsoProvides(request, FormSkin)
- Check that fields have been created on the edition page:
+Check that fields have been created on the edition page:
>>> view = component.getMultiAdapter((manfred, request), name='edit')
>>> view
@@ -20,7 +20,7 @@
>>> '<div class="layout">' in view()
True
- If we call the render method we get the edit-page without the layout
+If we call the render method we get the edit-page without the layout
>>> view.render().startswith('<form action="http://127.0.0.1"')
True
@@ -36,6 +36,62 @@
>>> view.updateMarker
True
+Now let us try to render the complete edit form
+
+ >>> print view()
+ <html>
+ <body>
+ <div class="layout"><form action="http://127.0.0.1" method="post"
+ enctype="multipart/form-data" class="edit-form"
+ name="form" id="form">
+ <div class="viewspace">
+ <div class="required-info">
+ <span class="required">*</span>
+ – required
+ </div>
+ <div>
+ <div id="form-widgets-name-row" class="row">
+ <div class="label">
+ <label for="form-widgets-name">
+ <span>Name</span>
+ <span class="required">*</span>
+ </label>
+ </div>
+ <div class="widget">
+ <input id="form-widgets-name" name="form.widgets.name"
+ class="text-widget required textline-field"
+ value="" type="text" />
+ </div>
+ </div>
+ <div id="form-widgets-age-row" class="row">
+ <div class="label">
+ <label for="form-widgets-age">
+ <span>Age</span>
+ <span class="required">*</span>
+ </label>
+ </div>
+ <div class="widget">
+ <input id="form-widgets-age" name="form.widgets.age"
+ class="text-widget required int-field" value=""
+ type="text" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div>
+ <div class="buttons">
+ <input id="form-buttons-apply" name="form.buttons.apply"
+ class="submit-widget button-field" value="Apply"
+ type="submit" />
+ </div>
+ </div>
+ </form>
+ </div>
+ </body>
+ </html>
+
+
+
"""
import grok
@@ -75,6 +131,11 @@
self.updateMarker = True
+class View(z3cform.PageDisplayForm):
+ fields = field.Fields(IMammoth)
+
+
+
def test_suite():
from zope.testing import doctest
from megrok.z3cform.tests import FunctionalLayer
Added: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/utils.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/utils.py (rev 0)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/utils.py 2009-07-01 14:38:16 UTC (rev 101367)
@@ -0,0 +1,14 @@
+import grok
+import z3c.form
+from zope.lifecycleevent import Attributes
+
+def apply_data_event(form, context, data):
+ """ Updates the object with the data and sends an IObjectModifiedEvent
+ """
+ changes = z3c.form.applyChanges(form, context, data)
+ if changes:
+ descriptions = []
+ for interface, names in changes.items():
+ descriptions.append(Attributes(interface, *names))
+ grok.notify(grok.ObjectModifiedEvent(context, *descriptions))
+ return changes
More information about the Checkins
mailing list