[Checkins] SVN: z3c.formwidget.traverser/trunk/ Still finishing the tests

Fernando Neto fcdoth at gmail.com
Sat Apr 26 02:15:07 EDT 2008


Log message for revision 85736:
  Still finishing the tests

Changed:
  A   z3c.formwidget.traverser/trunk/
  A   z3c.formwidget.traverser/trunk/README.txt
  A   z3c.formwidget.traverser/trunk/bootstrap.py
  A   z3c.formwidget.traverser/trunk/buildout.cfg
  A   z3c.formwidget.traverser/trunk/setup.py
  A   z3c.formwidget.traverser/trunk/src/
  A   z3c.formwidget.traverser/trunk/src/z3c/
  A   z3c.formwidget.traverser/trunk/src/z3c/__init__.py
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/__init__.py
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/README.txt
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/__init__.py
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/browser.py
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/configure.zcml
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/interfaces.py
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/namespace.py
  A   z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/tests.py

-=-
Added: z3c.formwidget.traverser/trunk/README.txt
===================================================================
--- z3c.formwidget.traverser/trunk/README.txt	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/README.txt	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,8 @@
+=========================
+z3c.form widget traverser
+=========================
+
+This is a port from z3c.widget.namespace designed for zope.formlib that now
+works for z3c.form widgets.
+
+Kudos goes to Roger Ineichen and Dobe for the original implementation
\ No newline at end of file

Added: z3c.formwidget.traverser/trunk/bootstrap.py
===================================================================
--- z3c.formwidget.traverser/trunk/bootstrap.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/bootstrap.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,52 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+
+$Id: bootstrap.py 71627 2006-12-20 16:46:11Z jim $
+"""
+
+import os, shutil, sys, tempfile, urllib2
+
+tmpeggs = tempfile.mkdtemp()
+
+ez = {}
+exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+                     ).read() in ez
+ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+
+import pkg_resources
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+if sys.platform == 'win32':
+    cmd = '"%s"' % cmd # work around spawn lamosity on windows
+
+ws = pkg_resources.working_set
+assert os.spawnle(
+    os.P_WAIT, sys.executable, sys.executable,
+    '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout',
+    dict(os.environ,
+         PYTHONPATH=
+         ws.find(pkg_resources.Requirement.parse('setuptools')).location
+         ),
+    ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout')
+import zc.buildout.buildout
+zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
+shutil.rmtree(tmpeggs)

Added: z3c.formwidget.traverser/trunk/buildout.cfg
===================================================================
--- z3c.formwidget.traverser/trunk/buildout.cfg	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/buildout.cfg	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,9 @@
+[buildout]
+develop = .
+parts = test
+
+find-links = http://download.zope.org/distribution/
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = z3c.formwidget.traverser
\ No newline at end of file

Added: z3c.formwidget.traverser/trunk/setup.py
===================================================================
--- z3c.formwidget.traverser/trunk/setup.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/setup.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,38 @@
+#!python
+from setuptools import setup, find_packages
+
+setup(name='z3c.formwidget.traverser',
+      version='0.1',
+      author = "Zope Community",
+      author_email = "zope3-dev at zope.org",
+      description = "A widget traverser for z3c.form.",
+      long_description=open('README.txt').read(),
+      license = "ZPL 2.1",
+      keywords = "zope zope3 z3c.form",
+      url='http://svn.zope.org/z3c.formwidget.traverser',
+      zip_safe=False,
+      packages=find_packages('src'),
+      include_package_data=True,
+      package_dir = {'':'src'},
+      namespace_packages=['z3c', 'z3c.formwidget'],
+      extras_require = dict(test=['zope.app.testing',
+                                  'zope.testing',
+                                  ]),
+      install_requires = ['setuptools',
+                          'z3c.form',
+                          'zope.app.form',
+                          'zope.interface',
+                          'zope.schema',
+                          'zope.component',
+                          'zope.i18nmessageid',
+                          ],
+      classifiers = ['Development Status :: 4 - Alpha',
+                     'Environment :: Web Environment',
+                     'Framework :: Zope3',
+                     'Intended Audience :: Developers',
+                     'License :: OSI Approved :: Zope Public License',
+                     'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
+                     'Programming Language :: Python',
+                     'Topic :: Software Development :: Libraries :: Python Modules',
+                     ],
+      )

Added: z3c.formwidget.traverser/trunk/src/z3c/__init__.py
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/__init__.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/__init__.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,6 @@
+# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)

Added: z3c.formwidget.traverser/trunk/src/z3c/formwidget/__init__.py
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/formwidget/__init__.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/formwidget/__init__.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,6 @@
+# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)

Added: z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/README.txt
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/README.txt	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/README.txt	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,29 @@
+====================
+The Widget Namespace
+====================
+
+The widget namespace provides a way to traverse to the widgets of a
+formlib form.
+
+  >>> from z3c.formwidget.traverser.namespace import WidgetHandler
+  >>> from z3c.form import testing
+  >>> testing.setupFormDefaults()  
+
+Let us define a form to test this behaviour.
+
+  >>> from z3c.form import form, field
+  >>> from zope import interface, schema
+  >>> class IMyContent(interface.Interface):
+  ...     title = schema.TextLine(title=u'Title')
+  >>> class MyContent(object):
+  ...     interface.implements(IMyContent)
+  ...     title=None
+  >>> content = MyContent()
+  >>> request = testing.TestRequest()
+  >>> class MyForm(form.EditForm):
+  ...     fields = field.Fields(IMyContent)
+  >>> view = MyForm(content, request)
+  >>> handler = WidgetHandler(view, request)
+  >>> handler.traverse('title', None)
+  <TextWidget 'form.widgets.title'>
+  

Added: z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/__init__.py
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/__init__.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/__init__.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1 @@
+#
\ No newline at end of file

Added: z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/browser.py
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/browser.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/browser.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,12 @@
+from zope.publisher.browser import BrowserView
+from zope.security.proxy import removeSecurityProxy
+
+class WidgetView(BrowserView):
+
+    def __init__(self,context,request):
+        self.context = context
+        self.request = request
+
+    def __call__(self):
+        self.request.response.setHeader('Content-Type','text/html')
+        return removeSecurityProxy(self.context)()
\ No newline at end of file

Added: z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/configure.zcml
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/configure.zcml	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/configure.zcml	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,25 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.zope.org/browser">
+
+    <adapter
+        name="widget"
+        provides="zope.traversing.interfaces.ITraversable" for="*"
+        factory=".namespace.WidgetHandler"
+        />
+ 
+    <view
+        name="widget"
+        type="zope.interface.Interface"
+        provides="zope.traversing.interfaces.ITraversable" for="*"
+        factory=".namespace.WidgetHandler"
+        />
+
+    <browser:page
+        for="z3c.form.interfaces.IWidget"
+        name="index.html"
+        permission="zope.Public"
+        class=".browser.WidgetView"
+        />
+ 
+</configure>
\ No newline at end of file

Added: z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/interfaces.py
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/interfaces.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/interfaces.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,5 @@
+from zope.schema.interfaces import ISource
+
+class IQuerySource(ISource):
+    def search(traverser_string):
+        """Return values that match traverser."""

Added: z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/namespace.py
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/namespace.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/namespace.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,14 @@
+from zope.traversing.namespace import SimpleHandler
+from zope.security.proxy import removeSecurityProxy
+
+class WidgetHandler(SimpleHandler):
+
+    def __init__(self, context, request=None):
+        self.context = context
+        self.request = request
+
+    def traverse(self, name, ignored):
+        name = name.split('.')[-1]
+        removeSecurityProxy(self.context).update()
+        form = removeSecurityProxy(self.context)
+        return form.widgets.get(name)                        
\ No newline at end of file

Added: z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/tests.py
===================================================================
--- z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/tests.py	                        (rev 0)
+++ z3c.formwidget.traverser/trunk/src/z3c/formwidget/traverser/tests.py	2008-04-26 06:15:05 UTC (rev 85736)
@@ -0,0 +1,27 @@
+import doctest
+import unittest
+from zope import interface, component, schema
+from zope.testing import doctestunit
+from zope.app.testing import setup
+
+def setUp(test):
+    test.globs = dict(
+        root=setup.placefulSetUp(True),
+        pprint=doctestunit.pprint,
+        interface=interface,
+        component=component,
+        schema=schema)
+        
+def tearDown(test):
+    setup.placefulTearDown()
+
+def test_suite():
+    return unittest.TestSuite((
+        doctestunit.DocFileSuite(
+            'README.txt',
+            setUp=setUp, tearDown=tearDown,
+            optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS),
+        ))
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')



More information about the Checkins mailing list