[Checkins] SVN: megrok.z3cform.composed/trunk/ Added tests and prepared the 0.1 release

Souheil CHELFOUH souheil at chelfouh.com
Tue Oct 27 15:27:03 EDT 2009


Log message for revision 105308:
  Added tests and prepared the 0.1 release
  

Changed:
  D   megrok.z3cform.composed/trunk/README.txt
  U   megrok.z3cform.composed/trunk/docs/HISTORY.txt
  U   megrok.z3cform.composed/trunk/setup.py
  A   megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/README.txt
  U   megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/__init__.py
  U   megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/composedform.py
  U   megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/configure.zcml
  A   megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/ftesting.zcml
  U   megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.zcml
  A   megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/tests.py

-=-
Deleted: megrok.z3cform.composed/trunk/README.txt
===================================================================
--- megrok.z3cform.composed/trunk/README.txt	2009-10-27 18:29:59 UTC (rev 105307)
+++ megrok.z3cform.composed/trunk/README.txt	2009-10-27 19:27:02 UTC (rev 105308)
@@ -1,4 +0,0 @@
-Introduction
-============
-
-

Modified: megrok.z3cform.composed/trunk/docs/HISTORY.txt
===================================================================
--- megrok.z3cform.composed/trunk/docs/HISTORY.txt	2009-10-27 18:29:59 UTC (rev 105307)
+++ megrok.z3cform.composed/trunk/docs/HISTORY.txt	2009-10-27 19:27:02 UTC (rev 105308)
@@ -1,8 +1,7 @@
 Changelog
 =========
 
-1.0 - Unreleased
+0.1 (2009-10-27)
 ----------------
 
 * Initial release
-

Modified: megrok.z3cform.composed/trunk/setup.py
===================================================================
--- megrok.z3cform.composed/trunk/setup.py	2009-10-27 18:29:59 UTC (rev 105307)
+++ megrok.z3cform.composed/trunk/setup.py	2009-10-27 19:27:02 UTC (rev 105308)
@@ -1,17 +1,31 @@
+from os.path import join
 from setuptools import setup, find_packages
-import os
 
+name = 'megrok.z3cform.composed'
 version = '0.1'
+readme = open(join('src', 'megrok', 'z3cform', 'composed', 'README.txt')).read()
+history = open(join('docs', 'HISTORY.txt')).read()
 
-setup(name='megrok.z3cform.composed',
+install_requires = [
+    'setuptools',
+    'z3c.form',
+    'megrok.z3cform.base',
+    'grokcore.view',
+    'grokcore.viewlet',
+    'grokcore.component',
+    'zope.component',
+    ]
+
+tests_require = install_requires + [
+    'zope.testing',
+    'zope.app.testing',
+    'zope.app.zcmlfiles',
+    ]
+
+setup(name=name,
       version=version,
-      description="",
-      long_description=open("README.txt").read() + "\n" +
-                       open(os.path.join("docs", "HISTORY.txt")).read(),
-      classifiers=[
-        "Programming Language :: Python",
-        "Topic :: Software Development :: Libraries :: Python Modules",
-        ],
+      description="Composed forms for Grok, using z3c.form.",
+      long_description = readme + '\n\n' + history,
       keywords='z3cform Grok Form',
       author='Souheil Chelfouh',
       author_email='trollfot at gmail.com',
@@ -22,15 +36,17 @@
       namespace_packages=['megrok', 'megrok.z3cform'],
       include_package_data=True,
       zip_safe=False,
-      install_requires=[
-          'setuptools',
-          'z3c.form',
-          'megrok.z3cform.base',
-          'grokcore.view',
-          'grokcore.viewlet',
-          'zope.component',
-      ],
-      entry_points="""
-      # -*- Entry points: -*-
-      """,
+      tests_require = tests_require,
+      install_requires = install_requires,
+      extras_require = {'test': tests_require},
+      test_suite="megrok.z3cform.composed",
+      classifiers = [
+          'Development Status :: 4 - Beta',
+          'Environment :: Web Environment',
+          'Framework :: Grok',
+          'Intended Audience :: Other Audience',
+          'License :: OSI Approved :: GNU General Public License (GPL)',
+          'Operating System :: OS Independent',
+          'Programming Language :: Python',
+          ],
       )

Copied: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/README.txt (from rev 105305, megrok.z3cform.composed/trunk/README.txt)
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/README.txt	                        (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/README.txt	2009-10-27 19:27:02 UTC (rev 105308)
@@ -0,0 +1,112 @@
+=======================
+megrok.z3cform.composed
+=======================
+
+`megrok.z3cform.composed` is a package dedicated to define and
+register composed forms. Composed forms are forms built from a
+collection of sub forms.
+
+`megrok.z3cform.composed` is based on `z3c.form` and
+`megrok.z3cform.base`.
+
+
+Getting started
+===============
+
+We import the needed dependencies::
+
+  >>> import grokcore.view as grok
+  >>> import megrok.z3cform.composed
+  >>> from megrok.z3cform.composed import ComposedForm, SubForm
+
+We import the components utilities::
+
+  >>> from zope.component import getMultiAdapter
+  >>> from zope.publisher.browser import TestRequest
+
+
+Defining a composed form
+========================
+
+Context
+-------
+
+A form needs a context. Let's create a simple model for test purposes::
+
+  >>> class MyContent(object):
+  ...    pass
+
+
+Declaration
+-----------
+
+  >>> class Form(ComposedForm):
+  ...   grok.context(MyContent)
+
+
+Registration
+------------
+
+  >>> grok_component('composed', Form)
+  True
+
+
+Query
+-----
+
+  >>> content = MyContent()
+  >>> request = TestRequest()
+
+  >>> composed = getMultiAdapter((content, request), name="form")
+  >>> composed
+  <megrok.z3cform.composed.tests.Form object at ...>
+
+  >>> composed.subforms
+  []
+
+  >>> composed.updateForm()
+  >>> composed.subforms
+  []
+
+
+Defining sub forms
+==================
+
+Declaration
+-----------
+
+  >>> class SubFormOne(SubForm):
+  ...     grok.context(MyContent)
+  ...     megrok.z3cform.composed.order(2)
+  ...     megrok.z3cform.composed.view(Form)
+
+  >>> class SubFormTwo(SubForm):
+  ...     grok.context(MyContent)
+  ...     megrok.z3cform.composed.order(1)
+  ...     megrok.z3cform.composed.view(Form)
+
+
+Registration
+------------
+
+  >>> grok_component('one', SubFormOne)
+  True
+
+  >>> grok_component('one', SubFormTwo)
+  True
+
+
+Query
+-----
+
+  >>> composed.subforms
+  []
+
+  >>> composed.updateForm()
+  >>> composed.subforms
+  [<megrok.z3cform.composed.tests.SubFormTwo object at ...>, <megrok.z3cform.composed.tests.SubFormOne object at ...>]
+
+  >>> for sub in composed.subforms:
+  ...   print sub.prefix, sub.parentForm
+  subformtwo <megrok.z3cform.composed.tests.Form object at ...>
+  subformone <megrok.z3cform.composed.tests.Form object at ...>


Property changes on: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/README.txt
___________________________________________________________________
Added: svn:mergeinfo
   + 

Modified: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/__init__.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/__init__.py	2009-10-27 18:29:59 UTC (rev 105307)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/__init__.py	2009-10-27 19:27:02 UTC (rev 105308)
@@ -2,3 +2,4 @@
 
 from subform import SubForm
 from composedform import ComposedForm
+from grokcore.viewlet import view, order

Modified: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/composedform.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/composedform.py	2009-10-27 18:29:59 UTC (rev 105307)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/composedform.py	2009-10-27 19:27:02 UTC (rev 105308)
@@ -12,6 +12,7 @@
     """A more generic form which can be composed of many others.
     """
     grok.baseclass()
+    subforms = []
 
     def updateSubForms(self):
         subforms = map(lambda x: x[1], component.getAdapters(

Modified: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/configure.zcml
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/configure.zcml	2009-10-27 18:29:59 UTC (rev 105307)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/configure.zcml	2009-10-27 19:27:02 UTC (rev 105308)
@@ -2,7 +2,10 @@
     xmlns="http://namespaces.zope.org/zope"
     xmlns:grok="http://namespaces.zope.org/grok">
  
+  <include package="megrok.z3cform.base" file="meta.zcml" />
   <include package="megrok.pagetemplate" file="meta.zcml" />
   <grok:grok package="." />
 
+  <include package="megrok.z3cform.base" />
+
 </configure>

Added: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/ftesting.zcml
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/ftesting.zcml	                        (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/ftesting.zcml	2009-10-27 19:27:02 UTC (rev 105308)
@@ -0,0 +1,16 @@
+<configure
+   xmlns="http://namespaces.zope.org/zope"
+   xmlns:grok="http://namespaces.zope.org/grok">
+
+  <include package="zope.app.zcmlfiles" file="meta.zcml" />
+  <include package="zope.app.zcmlfiles" />
+
+  <include package="megrok.layout" />
+
+  <include package="megrok.z3cform.composed" />
+  <include package="megrok.z3cform.composed" file="meta.zcml" />
+  
+  <!-- Layer manipulation -->
+  <include package="megrok.z3cform.base" file="default_form_layer.zcml"/>
+
+</configure>

Modified: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.zcml
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.zcml	2009-10-27 18:29:59 UTC (rev 105307)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.zcml	2009-10-27 19:27:02 UTC (rev 105308)
@@ -1,6 +1,8 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
     xmlns:grok="http://namespaces.zope.org/grok">
+
   <include package="grokcore.component" file="meta.zcml" />
   <grok:grok package=".meta" />	
+
 </configure>

Added: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/tests.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/tests.py	                        (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/tests.py	2009-10-27 19:27:02 UTC (rev 105308)
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+
+import os.path
+import unittest
+
+from zope.testing import doctest
+from zope.app.testing import functional
+from grokcore.component.testing import grok_component
+
+ftesting_zcml = os.path.join(os.path.dirname(__file__), 'ftesting.zcml')
+FunctionalLayer = functional.ZCMLLayer(
+    ftesting_zcml, __name__, 'FunctionalLayer', allow_teardown=True
+    )
+
+def test_suite():
+    suite = unittest.TestSuite()
+    readme = functional.FunctionalDocFileSuite(
+        'README.txt',
+        globs={
+            '__name__': 'megrok.z3cform.composed.tests',
+            'grok_component': grok_component
+            }
+        )
+    readme.layer = FunctionalLayer
+    suite.addTest(readme)
+    return suite



More information about the checkins mailing list