[Checkins] SVN: megrok.z3cform.composed/ megrok.z3cform.composed initial import.
Souheil CHELFOUH
souheil at chelfouh.com
Mon Sep 14 11:46:45 EDT 2009
Log message for revision 103951:
megrok.z3cform.composed initial import.
Changed:
A megrok.z3cform.composed/branches/
A megrok.z3cform.composed/tags/
A megrok.z3cform.composed/trunk/
A megrok.z3cform.composed/trunk/README.txt
A megrok.z3cform.composed/trunk/docs/
A megrok.z3cform.composed/trunk/docs/HISTORY.txt
A megrok.z3cform.composed/trunk/setup.py
A megrok.z3cform.composed/trunk/src/
A megrok.z3cform.composed/trunk/src/megrok/
A megrok.z3cform.composed/trunk/src/megrok/__init__.py
A megrok.z3cform.composed/trunk/src/megrok/z3cform/
A megrok.z3cform.composed/trunk/src/megrok/z3cform/__init__.py
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/__init__.py
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/composedform.py
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.py
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.zcml
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/subform.py
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/composedform.pt
A megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/z3cform.pt
-=-
Added: megrok.z3cform.composed/trunk/README.txt
===================================================================
--- megrok.z3cform.composed/trunk/README.txt (rev 0)
+++ megrok.z3cform.composed/trunk/README.txt 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,4 @@
+Introduction
+============
+
+
Added: megrok.z3cform.composed/trunk/docs/HISTORY.txt
===================================================================
--- megrok.z3cform.composed/trunk/docs/HISTORY.txt (rev 0)
+++ megrok.z3cform.composed/trunk/docs/HISTORY.txt 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,8 @@
+Changelog
+=========
+
+1.0 - Unreleased
+----------------
+
+* Initial release
+
Added: megrok.z3cform.composed/trunk/setup.py
===================================================================
--- megrok.z3cform.composed/trunk/setup.py (rev 0)
+++ megrok.z3cform.composed/trunk/setup.py 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,36 @@
+from setuptools import setup, find_packages
+import os
+
+version = '0.1'
+
+setup(name='megrok.z3cform.composed',
+ 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",
+ ],
+ keywords='z3cform Grok Form',
+ author='Souheil Chelfouh',
+ author_email='trollfot at gmail.com',
+ url='',
+ license='GPL',
+ packages=find_packages('src', exclude=['ez_setup']),
+ package_dir={'': 'src'},
+ 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: -*-
+ """,
+ )
Added: megrok.z3cform.composed/trunk/src/megrok/__init__.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/__init__.py (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/__init__.py 2009-09-14 15:46:44 UTC (rev 103951)
@@ -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: megrok.z3cform.composed/trunk/src/megrok/z3cform/__init__.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/__init__.py (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/__init__.py 2009-09-14 15:46:44 UTC (rev 103951)
@@ -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: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/__init__.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/__init__.py (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/__init__.py 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+
+from subform import SubForm
+from composedform import ComposedForm
Added: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/composedform.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/composedform.py (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/composedform.py 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+
+import grokcore.viewlet
+import zope.component as component
+from megrok.z3cform.base import PageForm
+from z3c.form.interfaces import ISubForm
+
+
+class ComposedForm(PageForm):
+ """A more generic form which can be composed of many others.
+ """
+ grokcore.viewlet.baseclass()
+
+ template = grokcore.viewlet.PageTemplateFile('templates/composedform.pt')
+
+ def updateSubForms(self):
+ subforms = map(lambda x: x[1], component.getAdapters(
+ (self.context, self.request, self), ISubForm))
+ subforms = grokcore.viewlet.util.sort_components(subforms)
+ self.subforms = []
+ # Update form
+ for subform in subforms:
+ if not subform.available():
+ continue
+ subform.update()
+ subform.updateForm()
+ self.subforms.append(subform)
+
+ def updateForm(self):
+ self.updateSubForms()
+ super(PageForm, self).updateForm()
Added: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.py (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.py 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+
+import martian
+import zope.component
+import grokcore.viewlet
+import grokcore.component
+from z3c.form.interfaces import ISubForm
+from megrok.z3cform.composed import SubForm
+from grokcore.view.meta.views import default_view_name
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+
+
+class SubFormGrokker(martian.ClassGrokker):
+ martian.component(SubForm)
+ martian.directive(grokcore.component.context)
+ martian.directive(grokcore.viewlet.layer, default=IDefaultBrowserLayer)
+ martian.directive(grokcore.viewlet.view)
+ martian.directive(grokcore.viewlet.name, get_default=default_view_name)
+
+ def grok(self, name, factory, module_info, **kw):
+ factory.module_info = module_info
+ return super(SubFormGrokker, self).grok(
+ name, factory, module_info, **kw
+ )
+
+ def execute(self, factory, config, context, layer, view, name, **kw):
+ if not factory.prefix:
+ factory.prefix = name
+ adapts = (context, layer, view)
+ config.action(
+ discriminator=('adapter', adapts, ISubForm, name),
+ callable=zope.component.provideAdapter,
+ args=(factory, adapts, ISubForm, name),
+ )
+ return True
Added: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.zcml
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.zcml (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/meta.zcml 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,6 @@
+<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/subform.py
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/subform.py (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/subform.py 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+
+import grokcore.view as grok
+from megrok.z3cform.base import PageForm
+from grokcore.view.meta.views import default_view_name
+from z3c.form.interfaces import ISubForm
+
+
+class SubForm(PageForm):
+ """A form going in a composed form.
+ """
+ grok.baseclass()
+ grok.implements(ISubForm)
+
+ def __init__(self, context, request, parentForm=None):
+ self.parentForm = self.__parent__ = parentForm
+ super(PageForm, self).__init__(context, request)
+
+ def available(self):
+ return self.getContent() is not None
+
+ @property
+ def prefix(self):
+ name = grok.name.bind().get(self) or default_view_name(self)
+ return str('%s' % name)
Added: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/composedform.pt
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/composedform.pt (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/composedform.pt 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,3 @@
+<tal:repeat tal:repeat="form view/subforms"
+ tal:replace="structure form/render">
+</tal:repeat>
Added: megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/z3cform.pt
===================================================================
--- megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/z3cform.pt (rev 0)
+++ megrok.z3cform.composed/trunk/src/megrok/z3cform/composed/templates/z3cform.pt 2009-09-14 15:46:44 UTC (rev 103951)
@@ -0,0 +1,74 @@
+ <html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="silva"
+ tal:omit-tag="">
+
+ <form action="." method="post">
+
+ <table class="listing">
+
+ <tbody>
+
+ <metal:label metal:define-macro="label">
+ <tal:label tal:define="label view/label | nothing"
+ tal:condition="label">
+ <tr class="top-controls">
+ <td colspan="2">
+ <h3 tal:content="label">Label</h3>
+ </td>
+ </tr>
+ </tal:label>
+ </metal:label>
+
+ <metal:widgets metal:define-macro="widgets">
+ <tal:repeat tal:repeat="widget view/widgets/values">
+ <tr class="#"
+ tal:define="widget_odd repeat/widget/odd;
+ description widget/field/description;
+ error widget/error;
+ idx repeat/widget/index"
+ tal:attributes="class python:widget_odd and ('odd' + ' row' + str(idx))
+ or ('even' + ' row' + str(idx)) + (error and ' field-error' or '')">
+ <td class="designator"
+ style="width:25%">
+ <label tal:attributes="for widget/id"
+ tal:content="widget/label">
+ Field Name
+ </label><span class="warning"
+ tal:condition="widget/required">*</span>
+ <p tal:condition="description" tal:content="description">
+ Description
+ </p>
+ </td>
+ <td class="field">
+ <tal:error tal:condition="error"
+ tal:content="structure error/render">
+ Validation error.
+ </tal:error>
+ <tal:widget tal:content="structure widget/render">
+ Widget.
+ </tal:widget>
+ </td>
+ </tr>
+ </tal:repeat>
+ </metal:widgets>
+ </tbody>
+
+ <tfoot>
+ <metal:actions metal:define-macro="actions">
+ <tr class="controls" tal:condition="view/actions">
+ <td class="align-right" colspan="2">
+ <input tal:repeat="action view/actions/values | nothing"
+ tal:replace="structure action/render" />
+ </td>
+ </tr>
+ </metal:actions>
+ </tfoot>
+
+ </table>
+
+ </form>
+
+ </html>
More information about the checkins
mailing list