[Checkins] SVN: megrok.z3cform.wizard/trunk/ upgrading to new grok version
Christian Klinger
cklinger at novareto.de
Wed Mar 17 17:43:25 EDT 2010
Log message for revision 110039:
upgrading to new grok version
Changed:
U megrok.z3cform.wizard/trunk/buildout.cfg
U megrok.z3cform.wizard/trunk/setup.py
U megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/__init__.py
U megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/components.py
A megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_layout_wizard.py
D megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_layout_wizard_templates/
U megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_wizard.py
-=-
Modified: megrok.z3cform.wizard/trunk/buildout.cfg
===================================================================
--- megrok.z3cform.wizard/trunk/buildout.cfg 2010-03-17 21:39:09 UTC (rev 110038)
+++ megrok.z3cform.wizard/trunk/buildout.cfg 2010-03-17 21:43:25 UTC (rev 110039)
@@ -1,20 +1,10 @@
[buildout]
develop = .
-parts = sources test
-extends = versions.cfg
+parts = test
+extends = http://grok.zope.org/releaseinfo/grok-1.1rc1.cfg
versions = versions
newest = false
-[versions]
-z3c.pagelet = 1.0.3
-zope.container = 3.8.1
-
-[sources]
-recipe=infrae.subversion
-urls = svn://svn.zope.org/repos/main/megrok.z3cform.base/trunk megrok.z3cform.base
-as_eggs=True
-
-
[test]
recipe = zc.recipe.testrunner
eggs =
Modified: megrok.z3cform.wizard/trunk/setup.py
===================================================================
--- megrok.z3cform.wizard/trunk/setup.py 2010-03-17 21:39:09 UTC (rev 110038)
+++ megrok.z3cform.wizard/trunk/setup.py 2010-03-17 21:43:25 UTC (rev 110039)
@@ -30,6 +30,7 @@
'grok',
'megrok.z3cform.base',
'megrok.pagetemplate',
+ 'zope.app.testing',
],
entry_points="""
# -*- Entry points: -*-
Modified: megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/__init__.py
===================================================================
--- megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/__init__.py 2010-03-17 21:39:09 UTC (rev 110038)
+++ megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/__init__.py 2010-03-17 21:43:25 UTC (rev 110039)
@@ -1,2 +1,2 @@
from z3c.wizard.interfaces import IWizard
-from components import WizardForm, Step, LayoutStep
+from components import WizardForm, Step, PageStep
Modified: megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/components.py
===================================================================
--- megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/components.py 2010-03-17 21:39:09 UTC (rev 110038)
+++ megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/components.py 2010-03-17 21:43:25 UTC (rev 110039)
@@ -7,6 +7,7 @@
from z3c.wizard import wizard, step
from megrok.z3cform.base import PageForm, Form
from zope.publisher.publish import mapply
+from megrok.layout import Page
class WizardForm(Form, wizard.Wizard, grokcore.view.View):
"""Base Class for a z3c.wizdard.
@@ -32,24 +33,17 @@
return self.render()
-class LayoutStep(BaseStep):
+class PageStep(Page, BaseStep):
"""A Step for the Witzard
"""
+
+ def __init__(self, context, request, wizard):
+ self.context = context
+ self.request = request
+ self.wizard = self.__parent__ = wizard
- def _render_template(self):
- assert not (self.template is None)
- if IGrokTemplate.providedBy(self.template):
- return super(Form, self)._render_template()
- return self.template(self)
+ def update(self):
+ BaseStep.update(self)
- def __call__(self):
- mapply(self.update, (), self.request)
- if self.request.response.getStatus() in (302, 303):
- # A redirect was triggered somewhere in update(). Don't
- # continue rendering the template or doing anything else.
- return
- if self.layout is None:
- layout = component.getMultiAdapter(
- (self.request, self.context), megrok.layout.ILayout)
- return layout(self)
- return self.layout()
+ def render(self):
+ return BaseStep.render(self)
Added: megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_layout_wizard.py
===================================================================
--- megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_layout_wizard.py (rev 0)
+++ megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_layout_wizard.py 2010-03-17 21:43:25 UTC (rev 110039)
@@ -0,0 +1,220 @@
+"""
+megrok wizard
+=============
+
+basic setup
+-----------
+
+ >>> from zope.app.testing.functional import getRootFolder
+ >>> root = getRootFolder()
+
+ >>> from zope import component
+ >>> from zope.interface import alsoProvides
+ >>> from zope.publisher.browser import TestRequest
+ >>> request = TestRequest()
+
+ >>> root['person1'] = person1 = Person()
+ >>> person1.__parent__ = root
+ >>> person1.__name__ = u'person'
+
+ >>> from zope.component import getMultiAdapter
+ >>> pw = getMultiAdapter((person1, request), name=u"personwizardlayout")
+ >>> pw
+ <PersonWizardLayout 'personwizardlayout'>
+
+ >>> obj, names = pw.browserDefault(request)
+ >>> obj
+ <PersonWizardLayout 'personwizardlayout'>
+
+ >>> names
+ ('person1step',)
+
+Render the personStep
+
+ >>> personStep = obj.publishTraverse(request, names[0])
+ >>> personStep.update()
+ >>> page = personStep.render()
+ >>> print page
+ <div class="wizard">
+ <div class="header">Person Wizard</div>
+ <div class="wizardMenu">
+ <span class="selected">
+ <span>Person1</span>
+ </span>
+ <span>
+ <a href="http://127.0.0.1/person/personwizardlayout/address1step">Address1</a>
+ </span>
+ </div>
+ <form action="http://127.0.0.1" method="post"
+ enctype="multipart/form-data" class="edit-form"
+ name="form" id="form">
+ <fieldset class="main">
+ <div class="viewspace">
+ <div class="label">Person1</div>
+ <div class="required-info">
+ <span class="required">*</span>– required
+ </div>
+ <div class="step">
+ <div id="form-widgets-firstName-row" class="row">
+ <div class="label">
+ <label for="form-widgets-firstName">
+ <span>First Name</span>
+ <span class="required">*</span>
+ </label>
+ </div>
+ <div class="widget">
+ <input id="form-widgets-firstName"
+ name="form.widgets.firstName"
+ class="text-widget required textline-field"
+ value="" type="text" />
+ </div>
+ </div>
+ <div id="form-widgets-lastName-row" class="row">
+ <div class="label">
+ <label for="form-widgets-lastName">
+ <span>Last Name</span>
+ <span class="required">*</span>
+ </label>
+ </div>
+ <div class="widget">
+ <input id="form-widgets-lastName"
+ name="form.widgets.lastName"
+ class="text-widget required textline-field"
+ value="" type="text" />
+ </div>
+ </div>
+ </div>
+ <div>
+ <div class="buttons">
+ <span class="back">
+ </span>
+ <span class="step">
+ <input id="form-buttons-apply" name="form.buttons.apply"
+ class="submit-widget button-field" value="Apply"
+ type="submit" />
+ </span>
+ <span class="forward">
+ <input id="form-buttons-next" name="form.buttons.next"
+ class="submit-widget button-field" value="Next"
+ type="submit" />
+ </span>
+ </div>
+ </div>
+ </div>
+ </fieldset>
+ </form>
+ </div>
+
+
+Sending an request but with no data
+
+ >>> request = TestRequest(form={'form.buttons.next': 'Next'})
+ >>> personWizard = PersonWizardLayout(person1, request)
+ >>> personWizard.__parent__ = person1
+ >>> personWizard.__name__ = u'wizard'
+ >>> personStep = personWizard.publishTraverse(request, names[0])
+ >>> personStep.update()
+ >>> print personStep.render()
+ <div class="wizard">
+ ...
+ <div class="summary">There were some errors.</div>
+ ...
+ <div class="error">Required input is missing.</div>
+ ...
+ <div class="error">Required input is missing.</div>
+ ...
+
+Sending an request with a working data set...
+
+ >>> request = TestRequest(form={'form.widgets.firstName': u'Roger',
+ ... 'form.widgets.lastName': u'Ineichen',
+ ... 'form.buttons.next': 'Next'})
+ >>> personWizard = PersonWizardLayout(person1, request)
+ >>> personWizard.__parent__ = person1
+ >>> personWizard.__name__ = u'wizard'
+ >>> personStep = personWizard.publishTraverse(request, names[0])
+ >>> personStep.update()
+ >>> print personStep.render()
+
+ >>> print personWizard.nextURL
+ http://127.0.0.1/person/wizard/address1step
+
+"""
+
+import grokcore.component as grok
+import zope.schema
+import zope.interface
+
+from megrok.z3cform import wizard as z3cwizard
+from z3c.wizard import wizard, step
+from zope.location.interfaces import ILocation
+from zope.schema.fieldproperty import FieldProperty
+from z3c.form import field
+from megrok.layout import Layout
+
+
+class MyLayout(Layout):
+ grok.context(zope.interface.Interface)
+
+ def render(self):
+ return "<html> %s </html>" % self.view.contentn()
+
+class IPerson(ILocation):
+ """Person interface."""
+
+ firstName = zope.schema.TextLine(title=u'First Name')
+ lastName = zope.schema.TextLine(title=u'Last Name')
+ street = zope.schema.TextLine(title=u'Street')
+ city = zope.schema.TextLine(title=u'City')
+
+
+class Person(object):
+ """Person content."""
+ grok.implements(IPerson)
+
+ __name__ = __parent__ = None
+
+ firstName = FieldProperty(IPerson['firstName'])
+ lastName = FieldProperty(IPerson['lastName'])
+ street = FieldProperty(IPerson['street'])
+ city = FieldProperty(IPerson['city'])
+
+
+class IPersonWizard(z3cwizard.IWizard):
+ """Person wizard marker."""
+
+
+class PersonWizardLayout(z3cwizard.WizardForm):
+ """ Wizard form."""
+ grok.implements(IPersonWizard)
+ grok.context(Person)
+
+ label = u'Person Wizard'
+
+ def setUpSteps(self):
+ return [
+ step.addStep(self, 'person1step', weight=1),
+ step.addStep(self, 'address1step', weight=2),
+ ]
+
+
+class Person1Step(z3cwizard.PageStep):
+ grok.context(PersonWizardLayout)
+ label = u'Person1'
+ fields = field.Fields(IPerson).select('firstName', 'lastName')
+
+
+class Address1Step(z3cwizard.PageStep):
+ grok.context(PersonWizardLayout)
+ label = u'Address1'
+ fields = field.Fields(IPerson).select('street', 'city')
+
+
+def test_suite():
+ from zope.testing import doctest
+ from megrok.z3cform.wizard.tests import FunctionalLayer
+ suite = doctest.DocTestSuite(
+ optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS)
+ suite.layer = FunctionalLayer
+ return suite
+
Modified: megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_wizard.py
===================================================================
--- megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_wizard.py 2010-03-17 21:39:09 UTC (rev 110038)
+++ megrok.z3cform.wizard/trunk/src/megrok/z3cform/wizard/tests/test_wizard.py 2010-03-17 21:43:25 UTC (rev 110039)
@@ -48,12 +48,12 @@
</div>
<form action="http://127.0.0.1" method="post"
enctype="multipart/form-data" class="edit-form"
- id="form">
+ name="form" id="form">
+ <fieldset class="main">
<div class="viewspace">
<div class="label">Person</div>
<div class="required-info">
- <span class="required">*</span>
- – required
+ <span class="required">*</span>– required
</div>
<div class="step">
<div id="form-widgets-firstName-row" class="row">
@@ -68,7 +68,7 @@
name="form.widgets.firstName"
class="text-widget required textline-field"
value="" type="text" />
- </div>
+ </div>
</div>
<div id="form-widgets-lastName-row" class="row">
<div class="label">
@@ -82,7 +82,7 @@
name="form.widgets.lastName"
class="text-widget required textline-field"
value="" type="text" />
- </div>
+ </div>
</div>
</div>
<div>
@@ -102,6 +102,7 @@
</div>
</div>
</div>
+ </fieldset>
</form>
</div>
More information about the checkins
mailing list