[Checkins] SVN: plone.z3cform/trunk/plone/z3cform/ Nuke trailing white space.
Maurits van Rees
m.van.rees at zestsoftware.nl
Tue Apr 12 11:08:11 EDT 2011
Log message for revision 121411:
Nuke trailing white space.
Changed:
U plone.z3cform/trunk/plone/z3cform/bbb/term.py
U plone.z3cform/trunk/plone/z3cform/configure.zcml
U plone.z3cform/trunk/plone/z3cform/crud/crud.py
U plone.z3cform/trunk/plone/z3cform/fieldsets/extensible.py
U plone.z3cform/trunk/plone/z3cform/fieldsets/group.py
U plone.z3cform/trunk/plone/z3cform/fieldsets/interfaces.py
U plone.z3cform/trunk/plone/z3cform/fieldsets/utils.py
U plone.z3cform/trunk/plone/z3cform/interfaces.py
U plone.z3cform/trunk/plone/z3cform/layout.py
U plone.z3cform/trunk/plone/z3cform/patch.py
U plone.z3cform/trunk/plone/z3cform/templates/form.pt
U plone.z3cform/trunk/plone/z3cform/templates/layout.pt
U plone.z3cform/trunk/plone/z3cform/templates/macros.pt
U plone.z3cform/trunk/plone/z3cform/templates.py
U plone.z3cform/trunk/plone/z3cform/templates.zcml
U plone.z3cform/trunk/plone/z3cform/tests.py
U plone.z3cform/trunk/plone/z3cform/textlines/textlines.py
U plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml
U plone.z3cform/trunk/plone/z3cform/traversal.py
U plone.z3cform/trunk/plone/z3cform/widget.py
U plone.z3cform/trunk/plone/z3cform/z2.py
-=-
Modified: plone.z3cform/trunk/plone/z3cform/bbb/term.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/bbb/term.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/bbb/term.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -5,7 +5,7 @@
import logging
import types
from zope.schema.interfaces import IContextSourceBinder
-
+
def patched_init(self, context, request, form, field, widget):
self.context = context
self.request = request
@@ -22,16 +22,16 @@
from z3c.form.term import ChoiceTerms
except ImportError:
return False
-
+
if not isinstance(ChoiceTerms, types.TypeType):
return False
try:
version = pkg_resources.get_distribution('z3c.form').version
except AttributeError:
return False
-
+
if version != '1.9.0':
return False
-
+
logging.getLogger('plone.z3cform').warn("Monkey patching z3c.form.term.ChoiceTerms to correctly bind fields")
ChoiceTerms.__init__ = patched_init
Modified: plone.z3cform/trunk/plone/z3cform/configure.zcml
===================================================================
--- plone.z3cform/trunk/plone/z3cform/configure.zcml 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/configure.zcml 2011-04-12 15:08:11 UTC (rev 121411)
@@ -13,7 +13,7 @@
<include package="z3c.form" />
<i18n:registerTranslations directory="locales"/>
-
+
<!-- Monkey patch BaseForm/GroupForm's update() to apply Zope 2 input
parameter processing. Without this, we'll get errors because Zope is
sending encoded str's when z3c.form wants decoded unicode's.
@@ -32,7 +32,7 @@
original="update"
replacement=".patch.GroupForm_update"
/>
-
+
<!-- Override the FileUploadDataConverter from z3c.form.
We register it for the class so that it is more specific than the one
registered in z3c.form. This avoids the need for a messy
@@ -42,7 +42,7 @@
for="zope.schema.Bytes z3c.form.interfaces.IFileWidget"
factory=".converter.FileUploadDataConverter"
/>
-
+
<!-- Backported from z3c.from trunk -->
<include package=".textlines" file="textlines.zcml"
zcml:condition="not-installed z3c.form.browser.textlines"/>
@@ -50,7 +50,7 @@
<!-- These are not backported, but represent useful policy -->
<adapter factory=".textlines.textlines.TextLinesSetConverter" />
<adapter factory=".textlines.textlines.TextLinesFrozenSetConverter" />
-
+
<!-- ++widget++ namespace -->
<adapter factory=".traversal.FormWidgetTraversal" name="widget" />
<adapter factory=".traversal.WrapperWidgetTraversal" name="widget" />
Modified: plone.z3cform/trunk/plone/z3cform/crud/crud.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/crud/crud.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/crud/crud.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -333,7 +333,7 @@
class AddForm(form.Form):
template = viewpagetemplatefile.ViewPageTemplateFile('crud-add.pt')
-
+
label = _(u"Add")
ignoreContext = True
ignoreRequest = True
Modified: plone.z3cform/trunk/plone/z3cform/fieldsets/extensible.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/fieldsets/extensible.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/fieldsets/extensible.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -17,48 +17,48 @@
"""Base class for IFormExtender adapters with convenience APIs
"""
implements(IFormExtender)
-
+
# Change this to prioritise
order = 0
-
+
def __init__(self, context, request, form):
self.context = context
self.request = request
self.form = form
-
+
def add(self, *args, **kwargs):
"""Add one or more fields. Keyword argument 'index' can be used to
specify an index to insert at. Keyword argument 'group' can be used
to specify the label of a group, which will be found and used or
created if it doesn't exist.
"""
-
+
utils.add(self.form, *args, **kwargs)
-
+
def remove(self, field_name, prefix=None):
"""Get rid of a field. The omitted field will be returned.
"""
-
+
return utils.remove(self.form, field_name, prefix=prefix)
-
+
def move(self, field_name, before=None, after=None, prefix=None, relative_prefix=None):
"""Move the field with the given name before or after another field.
"""
-
+
utils.move(self.form, field_name, before=before, after=after,
prefix=prefix, relative_prefix=relative_prefix)
class ExtensibleForm(GroupForm):
implements(IExtensibleForm)
-
+
groups = []
default_fieldset_label = _(u"Default")
-
+
def update(self):
self.updateFields()
super(ExtensibleForm, self).update()
-
+
def updateFields(self):
extenders = getAdapters((self.context, self.request, self), IFormExtender)
for name, extender in sorted(extenders, key=order_key):
- extender.update()
\ No newline at end of file
+ extender.update()
Modified: plone.z3cform/trunk/plone/z3cform/fieldsets/group.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/fieldsets/group.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/fieldsets/group.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -7,29 +7,29 @@
class Group(group.Group):
implements(IDescriptiveGroup)
-
+
__name__ = u""
label = u""
description = u""
-
+
def getContent(self):
# Default to sharing content with parent
return self.__parent__.getContent()
class GroupFactory(object):
implements(IGroupFactory)
-
+
def __init__(self, __name__, fields, label=None, description=None):
self.__name__ = __name__
self.fields = fields
-
+
self.label = label or __name__
self.description = description
-
+
def __call__(self, context, request, parentForm):
g = Group(context, request, parentForm)
g.__name__ = self.__name__
g.label = self.label
g.description = self.description
g.fields = self.fields
- return g
\ No newline at end of file
+ return g
Modified: plone.z3cform/trunk/plone/z3cform/fieldsets/interfaces.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/fieldsets/interfaces.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/fieldsets/interfaces.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -5,18 +5,18 @@
class IFormExtender(Interface):
"""A component that can add, modify, sort and group fields in a form.
-
+
This should be a named multi adapter from (context, request, form).
"""
-
+
order = schema.Int(title=u"Order",
description=u"Use this property to order the sorter. " +
u"Low numbers are executed before high ones.",
required=True)
-
+
def update():
"""Modify the form in place. Supported operations include:
-
+
- modify the 'fields' object to change the default fieldset
- modify the 'groups' list to add, remove or reorder fieldsets
- modify the 'fields' property of a given group
@@ -26,29 +26,29 @@
"""Extension to z3c.form's Group class that can separate out a name,
a label and a description.
"""
-
+
__name__ = schema.TextLine(title=u"Name of this group")
-
+
label = schema.TextLine(title=u"Fieldset title",
description=u"The __name__ will be used if this is not given",
required=False)
-
+
description = schema.Text(title=u"Fieldset description",
required=False)
class IGroupFactory(Interface):
"""An object that can be used to create a z3c.form.group.Group.
"""
-
+
__name__ = schema.TextLine(title=u"Name of this group")
-
+
label = schema.TextLine(title=u"Fieldset title",
description=u"The __name__ will be used if this is not given",
required=False)
-
+
description = schema.Text(title=u"Fieldset description",
required=False)
-
+
fields = schema.Object(title=u"Fields in this form", schema=IFields)
class IExtensibleForm(Interface):
@@ -60,8 +60,8 @@
value_type=schema.Object(title=u"Group", schema=IGroupFactory))
default_fieldset_label = schema.TextLine(title=u"Label of the default fieldset")
-
+
def updateFields():
"""Called during form update to allow updating of self.fields
and self.groups.
- """
\ No newline at end of file
+ """
Modified: plone.z3cform/trunk/plone/z3cform/fieldsets/utils.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/fieldsets/utils.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/fieldsets/utils.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -9,10 +9,10 @@
to specify the label of a group, which will be found and used or
created if it doesn't exist.
"""
-
+
index = kwargs.pop('index', None)
group = kwargs.pop('group', None)
-
+
new_fields = Fields(*args, **kwargs)
if not group or isinstance(group, basestring):
@@ -23,7 +23,7 @@
if source is None and group:
source = GroupFactory(group, new_fields)
form.groups.append(source)
- else:
+ else:
if index is None or index >= len(source.fields):
source.fields += new_fields
else:
@@ -35,10 +35,10 @@
def remove(form, field_name, prefix=None):
"""Get rid of a field. The omitted field will be returned.
"""
-
+
if prefix:
field_name = expandPrefix(prefix) + field_name
-
+
if field_name in form.fields:
field = form.fields[field_name]
form.fields = form.fields.omit(field_name)
@@ -55,18 +55,18 @@
"""
if prefix:
field_name = expandPrefix(prefix) + field_name
-
+
if before and after:
raise ValueError(u"Only one of 'before' or 'after' is allowed")
-
+
offset = 0
if after:
offset = 1
-
+
relative = orig_relative = before or after
if relative_prefix:
relative = expandPrefix(relative_prefix) + relative
-
+
if field_name not in form.fields:
found = False
for group in getattr(form, 'groups', []):
@@ -75,7 +75,7 @@
break
if not found:
raise KeyError("Field %s not found" % field_name)
-
+
if relative != '*' and relative not in form.fields:
found = False
for group in form.groups:
@@ -84,12 +84,12 @@
break
if not found:
raise KeyError("Field %s not found" % relative)
-
+
field = remove(form, field_name)
-
+
group = None
index = None
-
+
if relative in form.fields:
index = form.fields.keys().index(relative)
elif orig_relative == '*' and relative_prefix is None:
@@ -107,10 +107,10 @@
index = 0
else:
index = len(group.fields.keys()) - 1
-
+
if index is None:
raise KeyError("Field %s not found" % relative)
-
+
add(form, field, group=group, index=index+offset)
def find_source(form, group=None):
@@ -120,4 +120,4 @@
return group_factory[0]
else:
return None
- return form
\ No newline at end of file
+ return form
Modified: plone.z3cform/trunk/plone/z3cform/interfaces.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/interfaces.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/interfaces.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -6,17 +6,17 @@
class IFormWrapper(Interface):
"""Form wrapper class.
-
+
This class allows "two-step" rendering, with an outer view rendering
part of the page and the form class rendering the form area.
-
+
In Zope < 2.12, this is the only way to get z3c.form support, because
the view class takes care of the acquisition requirement.
-
+
In Zope 2.12 and later, this approach is optional: you may register the
form class directly as a browser view.
"""
-
+
def update():
"""We use the content provider update/render couple.
"""
@@ -24,16 +24,16 @@
def render():
"""We use the content provider update/render couple.
"""
-
+
form = Attribute("The form class. Should be set at class level")
-
+
form_instance = schema.Object(
title = u"Instance of the form being rendered",
description = u"Set by the wrapper code during __init__()",
readonly = True,
schema = IForm
)
-
+
index = schema.Object(
title = u"Page template instance",
description = (u"If not set, a template will be found "
@@ -44,13 +44,13 @@
class IWrappedForm(Interface):
"""Marker interface applied to wrapped forms during rendering.
-
+
This allows different handling of templates, for example.
"""
class IDeferSecurityCheck(Interface):
"""Marker interface applied to the request during traversal.
-
+
This can be used by other code that wants to skip security
checks during traversal.
"""
Modified: plone.z3cform/trunk/plone/z3cform/layout.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/layout.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/layout.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -28,7 +28,7 @@
classes.
"""
zope.interface.implements(interfaces.IFormWrapper)
-
+
form = None # override this with a form class.
index = None # override with a page template, or rely on an adapter
request_layer = z3c.form.interfaces.IFormLayer
@@ -46,10 +46,10 @@
Override this method if you have more than one form.
"""
-
+
if not z3c.form.interfaces.ISubForm.providedBy(self.form_instance):
zope.interface.alsoProvides(self.form_instance, interfaces.IWrappedForm)
-
+
z2.switch_on(self, request_layer=self.request_layer)
self.form_instance.update()
# A z3c.form.form.AddForm do a redirect in its render method.
Modified: plone.z3cform/trunk/plone/z3cform/patch.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/patch.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/patch.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -12,19 +12,19 @@
_original_GroupForm_update = GroupForm.update
def BaseForm_update(self):
- # This monkey patch ensures that processInputs() is called before
+ # This monkey patch ensures that processInputs() is called before
# z3c.form does any work on the request. This is because z3c.form expects
# charset negotiation to have taken place in the publisher, and will
# complain about non-unicode strings
-
+
processInputs(self.request)
_original_BaseForm_update(self)
def GroupForm_update(self):
- # This monkey patch ensures that processInputs() is called before
+ # This monkey patch ensures that processInputs() is called before
# z3c.form does any work on the request. This is because z3c.form expects
# charset negotiation to have taken place in the publisher, and will
# complain about non-unicode strings
-
+
processInputs(self.request)
_original_GroupForm_update(self)
Modified: plone.z3cform/trunk/plone/z3cform/templates/form.pt
===================================================================
--- plone.z3cform/trunk/plone/z3cform/templates/form.pt 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/templates/form.pt 2011-04-12 15:08:11 UTC (rev 121411)
@@ -4,17 +4,17 @@
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
i18n:domain="plone.z3cform"
metal:use-macro="context/@@standard_macros/page">
-
+
<body metal:fill-slot="body">
-
+
<h1 tal:content="view/label | nothing" />
-
+
<div class="description"
tal:condition="view/description | nothing"
tal:content="structure view/description">Form description</div>
-
+
<metal:block use-macro="context/@@ploneform-macros/titlelessform" />
-
+
</body>
-
+
</html>
Modified: plone.z3cform/trunk/plone/z3cform/templates/layout.pt
===================================================================
--- plone.z3cform/trunk/plone/z3cform/templates/layout.pt 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/templates/layout.pt 2011-04-12 15:08:11 UTC (rev 121411)
@@ -1,7 +1,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
- xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
metal:use-macro="context/main_template/macros/master">
<body>
Modified: plone.z3cform/trunk/plone/z3cform/templates/macros.pt
===================================================================
--- plone.z3cform/trunk/plone/z3cform/templates/macros.pt 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/templates/macros.pt 2011-04-12 15:08:11 UTC (rev 121411)
@@ -29,9 +29,9 @@
<form action="." method="post"
tal:attributes="action request/getURL; enctype view/enctype">
-
+
<metal:block define-slot="formtop" />
-
+
<metal:fields-slot define-slot="fields">
<metal:define define-macro="fields">
@@ -83,7 +83,7 @@
</metal:define>
</metal:fields-slot>
-
+
<metal:actions-slot define-slot="actions">
<metal:define define-macro="actions">
<div class="action" tal:repeat="action view/actions/values|nothing">
@@ -91,7 +91,7 @@
</div>
</metal:define>
</metal:actions-slot>
-
+
<metal:block define-slot="formbottom" />
</form>
Modified: plone.z3cform/trunk/plone/z3cform/templates.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/templates.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/templates.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -1,5 +1,5 @@
"""This module provides "form template factories" that can be
-registered to provide default form templates for forms and subforms.
+registered to provide default form templates for forms and subforms.
The default templates draw from a macro page template which you can use by
itself to render parts of it.
@@ -37,7 +37,7 @@
class FormTemplateFactory(z3c.form.form.FormTemplateFactory):
"""Form template factory that will use Chameleon if installed (via
five.pt), or the Zope 2 ViewPageTemplateFile from Products.Five if not.
-
+
You can use this for a wrapped form, but not for a form that is going
to be rendered as a standalone view. Use ZopeTwoFormTemplateFactory for
that instead.
@@ -49,10 +49,10 @@
util.getSpecification(form),
util.getSpecification(request))(self)
zope.interface.implementer(IPageTemplate)(self)
-
+
class ZopeTwoFormTemplateFactory(z3c.form.form.FormTemplateFactory):
"""Form template factory for Zope 2 page templates.
-
+
Use this for any form which is going to be rendered as a view, or any
form wrapper view.
"""
@@ -76,7 +76,7 @@
page templates. This should only be necessary if you strictly need the
extra Zope 2-isms of Five's ViewPageTemplateFile.
"""
-
+
def __init__(self, filename, contentType='text/html', context=None,
request=None, view=None, field=None, widget=None
):
@@ -92,7 +92,7 @@
# View containing common macros
class Macros(zope.publisher.browser.BrowserView):
-
+
def __getitem__(self, key):
return self.index.macros[key]
Modified: plone.z3cform/trunk/plone/z3cform/templates.zcml
===================================================================
--- plone.z3cform/trunk/plone/z3cform/templates.zcml 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/templates.zcml 2011-04-12 15:08:11 UTC (rev 121411)
@@ -21,11 +21,11 @@
<!-- Form templates for wrapped layout use case -->
<adapter factory=".templates.layout_factory" />
<adapter factory=".templates.wrapped_form_factory" />
-
+
<!-- Form templates for standalone form use case -->
<adapter factory=".templates.standalone_form_factory" />
-
+
<!-- Form templates for subform use case -->
<adapter factory=".templates.subform_factory" />
-
+
</configure>
Modified: plone.z3cform/trunk/plone/z3cform/tests.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/tests.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/tests.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -26,7 +26,7 @@
def setup_defaults():
# Set up z3c.form defaults
z3c.form.testing.setupFormDefaults()
-
+
# Make traversal work; register both the default traversable
# adapter and the ++view++ namespace adapter
component.provideAdapter(
@@ -36,13 +36,13 @@
# Setup ploneform macros, simlulating the ZCML directive
plone.z3cform.templates.Macros.index = ViewPageTemplateFile(plone.z3cform.templates.path('macros.pt'))
-
+
component.provideAdapter(
plone.z3cform.templates.Macros,
(None, None),
zope.publisher.interfaces.browser.IBrowserView,
name='ploneform-macros')
-
+
# setup plone.z3cform templates
from zope.pagetemplate.interfaces import IPageTemplate
@@ -63,16 +63,16 @@
def test_suite():
layout_txt = doctest.DocFileSuite('layout.txt')
layout_txt.layer = testing_zcml_layer
-
+
inputs_txt = doctest.DocFileSuite('inputs.txt')
inputs_txt.layer = testing_zcml_layer
-
+
fieldsets_txt = doctest.DocFileSuite('fieldsets/README.txt')
fieldsets_txt.layer = testing_zcml_layer
-
+
traversal_txt = doctest.DocFileSuite('traversal.txt')
traversal_txt.layer = testing_zcml_layer
-
+
return unittest.TestSuite([
layout_txt, inputs_txt, fieldsets_txt, traversal_txt,
@@ -90,5 +90,5 @@
'plone.z3cform.crud.crud',
setUp=testing.setUp, tearDown=testing.tearDown,
),
-
+
])
Modified: plone.z3cform/trunk/plone/z3cform/textlines/textlines.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/textlines/textlines.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/textlines/textlines.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -31,7 +31,7 @@
from z3c.form.converter import TextLinesConverter
except ImportError:
-
+
# backport for z3c.form 1.9
@@ -98,7 +98,7 @@
if value is self.field.missing_value:
return u''
return u'\n'.join(unicode(v) for v in sorted(value))
-
+
class TextLinesFrozenSetConverter(TextLinesConverter):
"""Data converter for ITextLinesWidget operating on a frozenset."""
Modified: plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml
===================================================================
--- plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml 2011-04-12 15:08:11 UTC (rev 121411)
@@ -25,7 +25,7 @@
layer="z3c.form.interfaces.IFormLayer"
template="textlines_input.pt"
/>
-
+
<adapter
factory=".textlines.TextLinesConverter"
/>
Modified: plone.z3cform/trunk/plone/z3cform/traversal.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/traversal.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/traversal.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -21,15 +21,15 @@
class FormWidgetTraversal(object):
"""Allow traversal to widgets via the ++widget++ namespace. The context
is the from itself (used when the layout wrapper view is not used).
-
+
Note that to support security in Zope 2.10, the widget being traversed to
must have an __of__ method, i.e. it must support acquisition. The easiest
way to do that, is to mix in Acquisition.Explicit. The acquisition parent
will be the layout form wrapper view.
-
+
In Zope 2.12, this is not necessary, because we also set the __parent__
pointer of the returned widget to be the traversal context.
-
+
Unfortunately, if you mix in Acquisition.Explicit in Zope 2.12 *and* the
class implements IAcquirer, Zope may complain because the view probably
does *not* implement acquisition (in Zope 2.12, views no longer mix in
@@ -38,19 +38,19 @@
or some other mechanism to make sure the instance does not provide
IAcquirer.
"""
-
+
implements(ITraversable)
adapts(IForm, IBrowserRequest)
-
+
def __init__(self, context, request=None):
self.context = context
self.request = request
-
+
def _prepareForm(self):
return self.context
-
+
def traverse(self, name, ignored):
-
+
form = self._prepareForm()
# Since we cannot check security during traversal,
@@ -58,7 +58,7 @@
alsoProvides(self.request, IDeferSecurityCheck)
form.update()
noLongerProvides(self.request, IDeferSecurityCheck)
-
+
# Find the widget - it may be in a group
widget = None
if name in form.widgets:
@@ -67,24 +67,25 @@
for group in form.groups:
if name in group.widgets:
widget = group.widgets.get(name)
-
+
# Make the parent of the widget the traversal parent.
# This is required for security to work in Zope 2.12
if widget is not None:
widget.__parent__ = aq_inner(self.context)
return widget
-
+
raise TraversalError(name)
+
class WrapperWidgetTraversal(FormWidgetTraversal):
"""Allow traversal to widgets via the ++widget++ namespace. The context
is the from layout wrapper.
-
+
The caveat about security above still applies!
"""
-
+
adapts(IFormWrapper, IBrowserRequest)
-
+
def _prepareForm(self):
form = self.context.form_instance
z2.switch_on(self.context, request_layer=self.context.request_layer)
Modified: plone.z3cform/trunk/plone/z3cform/widget.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/widget.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/widget.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -43,6 +43,6 @@
@zope.interface.implementer(z3c.form.interfaces.IFieldWidget)
def SingleCheckBoxFieldWidget(field, request):
return z3c.form.widget.FieldWidget(field, SingleCheckBoxWidget(request))
-
+
# BBB:
-singlecheckboxwidget_factory = SingleCheckBoxFieldWidget
\ No newline at end of file
+singlecheckboxwidget_factory = SingleCheckBoxFieldWidget
Modified: plone.z3cform/trunk/plone/z3cform/z2.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/z2.py 2011-04-12 13:50:19 UTC (rev 121410)
+++ plone.z3cform/trunk/plone/z3cform/z2.py 2011-04-12 15:08:11 UTC (rev 121411)
@@ -24,17 +24,17 @@
the passed-in list of charsets. If none are passed in, look up the user's
preferred charsets. The default is to use utf-8.
"""
-
+
if IProcessedRequest.providedBy(request):
return
-
+
if charsets is None:
envadapter = IUserPreferredCharsets(request, None)
if envadapter is None:
charsets = ['utf-8']
else:
charsets = envadapter.getPreferredCharsets() or ['utf-8']
-
+
for name, value in request.form.items():
if not (isCGI_NAME(name) or name.startswith('HTTP_')):
if isinstance(value, str):
@@ -45,12 +45,12 @@
if isinstance(val, str):
val = _decode(val, charsets)
newValue.append(val)
-
+
if isinstance(value, tuple):
newValue = tuple(value)
-
+
request.form[name] = newValue
-
+
interface.alsoProvides(request, IProcessedRequest)
def _decode(text, charsets):
@@ -62,7 +62,7 @@
pass
return text
-# This is ripped from zope.publisher.http.HTTPRequest; it is only
+# This is ripped from zope.publisher.http.HTTPRequest; it is only
# necessary in Zope < 2.11
def setup_locale(request):
envadapter = IUserPreferredLanguages(request, None)
@@ -94,18 +94,18 @@
"""Fix up the request and apply the given layer. This is mainly useful
in Zope < 2.10 when using a wrapper layout view.
"""
-
+
request = view.request
-
+
if (not IFixedUpRequest.providedBy(request) and
not IBrowserApplicationRequest.providedBy(request)
):
-
+
interface.alsoProvides(request, IFixedUpRequest)
interface.alsoProvides(request, request_layer)
-
+
if getattr(request, 'locale', None) is None:
request.locale = setup_locale(request)
-
+
if not hasattr(request, 'getURL'):
add_getURL(request)
More information about the checkins
mailing list