[Checkins] SVN: megrok.z3cform/branches/megrok.z3cfrom-layout/s move the z3c.wizard into a seperate megrok.z3cwizard package
Christian Klinger
cklinger at novareto.de
Fri Jul 24 08:52:52 EDT 2009
Log message for revision 102235:
move the z3c.wizard into a seperate megrok.z3cwizard package
Changed:
U megrok.z3cform/branches/megrok.z3cfrom-layout/setup.py
U megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/__init__.py
U megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/meta.py
U megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/meta.zcml
D megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_layout_wizard.py
D megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_wizard.py
D megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/wizard.py
-=-
Modified: megrok.z3cform/branches/megrok.z3cfrom-layout/setup.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/setup.py 2009-07-24 12:49:07 UTC (rev 102234)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/setup.py 2009-07-24 12:52:51 UTC (rev 102235)
@@ -10,7 +10,6 @@
'grokcore.formlib',
'z3c.form',
'z3c.formui',
- 'z3c.wizard',
'megrok.layout',
]
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-24 12:49:07 UTC (rev 102234)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/__init__.py 2009-07-24 12:52:51 UTC (rev 102235)
@@ -5,7 +5,5 @@
from directives import field
from skin import FormLayer, TableLayer
from utils import apply_data_event
-from wizard import WizardForm, Step, LayoutStep
from z3c.form import widget, field, button, action
from z3c.form.form import extends
-from z3c.wizard.interfaces import IWizard
Modified: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/meta.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/meta.py 2009-07-24 12:49:07 UTC (rev 102234)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/meta.py 2009-07-24 12:52:51 UTC (rev 102235)
@@ -6,11 +6,9 @@
from z3c.form import field
from martian.error import GrokError
-from megrok.z3cform import wizard
from zope.interface import Interface
from megrok.z3cform import directives
from megrok.z3cform import components
-from z3c.wizard.zcml import wizardStepDirective
from zope.interface.interfaces import IInterface
from grokcore.view.meta.views import ViewGrokker, default_view_name
from z3c.form.zcml import widgetTemplateDirective
@@ -81,15 +79,3 @@
widgetTemplateDirective(config, template, context, layer,
view=view, field=field, widget=widget, mode=mode)
return True
-
-
-class WizardStepGrokker(martian.ClassGrokker):
- martian.component(wizard.BaseStep)
- martian.directive(grokcore.component.context)
- martian.directive(grokcore.component.name, get_default=default_view_name)
-
- def execute(self, factory, config, context, name, **kw):
-
- wizardStepDirective(config, factory, name,
- 'zope.Public', wizard=context)
- return True
Modified: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/meta.zcml
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/meta.zcml 2009-07-24 12:49:07 UTC (rev 102234)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/meta.zcml 2009-07-24 12:52:51 UTC (rev 102235)
@@ -11,7 +11,6 @@
<include package="z3c.macro" file="meta.zcml" />
<include package="z3c.formui"/>
<include package="megrok.layout" file="meta.zcml" />
- <include package="z3c.wizard"/>
<grok:grok package=".meta" />
Deleted: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_layout_wizard.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_layout_wizard.py 2009-07-24 12:49:07 UTC (rev 102234)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_layout_wizard.py 2009-07-24 12:52:51 UTC (rev 102235)
@@ -1,269 +0,0 @@
-"""
-megrok layout 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()
- >>> alsoProvides(request, FormWizardPage)
-
- >>> christian = Person()
- >>> root['christian'] = christian
- >>> christian.__parent__ = root
- >>> christian.__name__ = u'christian'
-
- >>> from zope.component import getMultiAdapter
- >>> pw = getMultiAdapter((christian, request), name=u"personwizardpage")
- >>> pw
- <PersonWizardPage 'personwizardpage'>
-
- >>> obj, names = pw.browserDefault(request)
- >>> obj
- <PersonWizardPage 'personwizardpage'>
-
- >>> names
- ('personstepp',)
-
-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>Person</span>
- </span>
- <span>
- <a href="http://127.0.0.1/christian/personwizardpage/addressstepp">Address</a>
- </span>
- </div>
- <form action="http://127.0.0.1" method="post"
- enctype="multipart/form-data" class="edit-form"
- id="form">
- <div class="viewspace">
- <div class="label">Person</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>
- </form>
- </div>
-
-Call the PersonStep
--------------------
-
- >>> print personStep()
- <html>
- <body>
- <div class="layout"><div class="wizard">
- <div class="header">Person Wizard</div>
- <div class="wizardMenu">
- <span class="selected">
- <span>Person</span>
- </span>
- <span>
- <a href="http://127.0.0.1/christian/personwizardpage/addressstepp">Address</a>
- </span>
- </div>
- <form action="http://127.0.0.1" method="post"
- enctype="multipart/form-data" class="edit-form"
- id="form">
- <div class="viewspace">
- <div class="label">Person</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>
- </form>
- </div>
- </div>
- </body>
- </html>
-
-"""
-
-import grok
-import zope.schema
-import zope.interface
-import megrok.layout
-
-from megrok import z3cform
-from z3c.wizard import wizard, step
-from zope.location.interfaces import ILocation
-from zope.schema.fieldproperty import FieldProperty
-
-
-class FormWizardPage(z3cform.FormLayer):
- grok.skin('formwizardpage')
-
-
-grok.layer(FormWizardPage)
-
-
-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 Layout(megrok.layout.Layout):
- grok.context(Person)
-
-
-class IPersonWizard(z3cform.IWizard):
- """Person wizard marker."""
-
-class PersonWizardPage(z3cform.WizardForm):
- """ Wizard form."""
- grok.implements(IPersonWizard)
- grok.context(Person)
-
- label = u'Person Wizard'
-
- def setUpSteps(self):
- return [
- step.addStep(self, 'personstepp', weight=1),
- step.addStep(self, 'addressstepp', weight=2),
- ]
-
-
-class PersonStepP(z3cform.LayoutStep):
- grok.context(PersonWizardPage)
- label = u'Person'
- fields = z3cform.field.Fields(IPerson).select('firstName', 'lastName')
-
-
-class AddressStepP(z3cform.LayoutStep):
- grok.context(PersonWizardPage)
- label = u'Address'
- fields = z3cform.field.Fields(IPerson).select('street', 'city')
-
-
-def test_suite():
- from zope.testing import doctest
- from megrok.z3cform.tests import FunctionalLayer
- suite = doctest.DocTestSuite(
- optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS)
- suite.layer = FunctionalLayer
- return suite
-
Deleted: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_wizard.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_wizard.py 2009-07-24 12:49:07 UTC (rev 102234)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/tests/test_wizard.py 2009-07-24 12:52:51 UTC (rev 102235)
@@ -1,220 +0,0 @@
-"""
-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()
- >>> alsoProvides(request, FormWizardLayer)
-
- >>> person = Person()
- >>> root['person'] = person
- >>> person.__parent__ = root
- >>> person.__name__ = u'person'
-
- >>> from zope.component import getMultiAdapter
- >>> pw = getMultiAdapter((person, request), name=u"personwizard")
- >>> pw
- <PersonWizard 'personwizard'>
-
- >>> obj, names = pw.browserDefault(request)
- >>> obj
- <PersonWizard 'personwizard'>
-
- >>> names
- ('personstep',)
-
-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>Person</span>
- </span>
- <span>
- <a href="http://127.0.0.1/person/personwizard/addressstep">Address</a>
- </span>
- </div>
- <form action="http://127.0.0.1" method="post"
- enctype="multipart/form-data" class="edit-form"
- id="form">
- <div class="viewspace">
- <div class="label">Person</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>
- </form>
- </div>
-
-Sending an request but with no data
-
- >>> request = TestRequest(form={'form.buttons.next': 'Next'})
- >>> alsoProvides(request, FormWizardLayer)
- >>> personWizard = PersonWizard(person, request)
- >>> personWizard.__parent__ = person
- >>> 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'})
- >>> alsoProvides(request, FormWizardLayer)
- >>> personWizard = PersonWizard(person, request)
- >>> personWizard.__parent__ = person
- >>> 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/addressstep
-
-"""
-
-import grok
-import zope.schema
-import zope.interface
-
-from megrok import z3cform
-from z3c.wizard import wizard, step
-from zope.location.interfaces import ILocation
-from zope.schema.fieldproperty import FieldProperty
-
-
-class FormWizardLayer(z3cform.FormLayer):
- grok.skin('formwizardlayer')
-
-
-grok.layer(FormWizardLayer)
-
-
-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(z3cform.IWizard):
- """Person wizard marker."""
-
-class PersonWizard(z3cform.WizardForm):
- """ Wizard form."""
- grok.implements(IPersonWizard)
- grok.context(Person)
-
- label = u'Person Wizard'
-
- def setUpSteps(self):
- return [
- step.addStep(self, 'personstep', weight=1),
- step.addStep(self, 'addressstep', weight=2),
- ]
-
-
-class PersonStep(z3cform.Step):
- grok.context(PersonWizard)
- label = u'Person'
- fields = z3cform.field.Fields(IPerson).select('firstName', 'lastName')
-
-
-class AddressStep(z3cform.Step):
- grok.context(PersonWizard)
- label = u'Address'
- fields = z3cform.field.Fields(IPerson).select('street', 'city')
-
-
-def test_suite():
- from zope.testing import doctest
- from megrok.z3cform.tests import FunctionalLayer
- suite = doctest.DocTestSuite(
- optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS)
- suite.layer = FunctionalLayer
- return suite
-
Deleted: megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/wizard.py
===================================================================
--- megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/wizard.py 2009-07-24 12:49:07 UTC (rev 102234)
+++ megrok.z3cform/branches/megrok.z3cfrom-layout/src/megrok/z3cform/wizard.py 2009-07-24 12:52:51 UTC (rev 102235)
@@ -1,57 +0,0 @@
-import martian
-import grokcore.view
-import megrok.layout
-
-from z3c.form import form
-from zope import component
-from z3c.wizard import wizard, step
-from zope.publisher.publish import mapply
-from megrok.z3cform.components import PageGrokForm, GrokForm
-
-class WizardForm(GrokForm, wizard.Wizard, grokcore.view.View):
- """Base Class for a z3c.wizdard.
- """
- martian.baseclass()
-
- def update(self):
- self.updateForm()
-
-class BaseStep(step.EditStep):
- """ Base Step
- """
-
-class Step(BaseStep):
- """A Step for the Witzard
- """
- 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
- return self.render()
-
-
-class LayoutStep(BaseStep):
- """A Step for the Witzard
- """
-
- def _render_template(self):
- assert not (self.template is None)
- if IGrokTemplate.providedBy(self.template):
- return super(GrokForm, self)._render_template()
- return self.template(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
- #self.updateForm()
- if self.layout is None:
- layout = component.getMultiAdapter(
- (self.context, self.request), megrok.layout.ILayout)
- return layout(self)
- return self.layout()
-
More information about the Checkins
mailing list