[Checkins] SVN: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/ - use mr.developer

Jean-Francois Roche jfroche at jfroche.be
Wed Dec 23 10:41:37 EST 2009


Log message for revision 107012:
  - use mr.developer
  - define simpler base FormView & refactoring
  
  

Changed:
  _U  five.megrok.z3cform/branches/based-on-megrok.z3cform.base/
  U   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/buildout.cfg
  D   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/devel/
  U   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/__init__.py
  U   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/components.py
  D   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/directive.py
  U   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/meta.py
  A   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/form/form_templates/
  A   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/form/form_templates/edit.pt
  U   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout.py
  A   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout_templates/
  A   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout_templates/edit.pt
  D   five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/layout.pt

-=-

Property changes on: five.megrok.z3cform/branches/based-on-megrok.z3cform.base
___________________________________________________________________
Added: svn:ignore
   + develop-eggs
include
eggs
var
fake-eggs
parts
downloads
lib
bin
.mr.developer.cfg


Modified: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/buildout.cfg
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/buildout.cfg	2009-12-23 15:40:37 UTC (rev 107011)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/buildout.cfg	2009-12-23 15:41:37 UTC (rev 107012)
@@ -1,21 +1,28 @@
 [buildout]
-extends = versions.cfg
+extensions = mr.developer
+
+auto-checkout =
+sources-dir = devel
+
 parts =
     zope2
     instance
     zopepy
+    omelette
     test
 develop = .
-          devel/megrok.z3cform.base
 versions = versions
 
+[sources]
+megrok.z3cform.base = svn svn://svn.zope.org/repos/main/megrok.z3cform.base/trunk
+
 [versions]
-z3c.form = 2.1.0
-grokcore.annotation = 1.1
+five.grok = 1.0
+grokcore.annotation = 1.0.1
 grokcore.component = 1.7
 grokcore.formlib = 1.4
 grokcore.security = 1.2
-grokcore.site = 1.1
+grokcore.site = 1.0.1
 grokcore.view = 1.12.2
 grokcore.viewlet = 1.3
 five.localsitemanager = 1.1
@@ -25,10 +32,11 @@
 zope.component = 3.4.0
 zope.i18n = 3.4.0
 zope.interface = 3.4.1
+zope.schema = 3.4.0
 zope.securitypolicy = 3.4.1
 zope.testing = 3.7.6
+z3c.form = 2.1.0
 
-
 # Unpin these packages so that the fake-eggs from the zope2 system are used
 zope.configuration = 
 zope.app.container = 

Modified: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/__init__.py
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/__init__.py	2009-12-23 15:40:37 UTC (rev 107011)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/__init__.py	2009-12-23 15:41:37 UTC (rev 107012)
@@ -1,2 +1 @@
-from components import Form, AddForm, EditForm, DisplayForm
-from directive import formview
+from components import Form, AddForm, EditForm, DisplayForm, FormView

Modified: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/components.py
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/components.py	2009-12-23 15:40:37 UTC (rev 107011)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/components.py	2009-12-23 15:41:37 UTC (rev 107012)
@@ -54,3 +54,27 @@
 
     def update(self):
         form.Form.update(self)
+
+import five.grok
+import z3c.form
+from Acquisition import aq_inner
+
+
+class FormView(five.grok.View):
+
+    request_layer = z3c.form.interfaces.IFormLayer
+
+    def __init__(self, context, request):
+        super(FormView, self).__init__(context, request)
+        self.form = self.formClass(
+            aq_inner(self.context), self.request)
+        self.form.__name__ = self.__name__
+
+    def update(self):
+        """On update, we switch on the zope3 request, needed to work with
+        our z3c form. We update here the wrapped form.
+
+        Override this method if you have more than one form.
+        """
+        z2.switch_on(self, request_layer=self.request_layer)
+        self.form.update()

Deleted: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/directive.py
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/directive.py	2009-12-23 15:40:37 UTC (rev 107011)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/directive.py	2009-12-23 15:41:37 UTC (rev 107012)
@@ -1,8 +0,0 @@
-# -*- coding: utf-8 -*-
-import martian
-
-
-class formview(martian.Directive):
-    scope = martian.CLASS
-    store = martian.ONCE
-    validate = martian.validateClass

Modified: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/meta.py
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/meta.py	2009-12-23 15:40:37 UTC (rev 107011)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/meta.py	2009-12-23 15:41:37 UTC (rev 107012)
@@ -1,15 +1,27 @@
 # -*- coding: utf-8 -*-
-from five.grok.meta import ViewSecurityGrokker
-from megrok.z3cform.base.components import GrokForm
 import martian
+import z3c.form
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+
 import grokcore.security
-from plone.z3cform.layout import wrap_form, FormWrapper
 from grokcore.view.meta.views import ViewGrokker, default_view_name
-from zope.publisher.interfaces.browser import IDefaultBrowserLayer
-from five.megrok.z3cform.directive import formview
-import Acquisition
 
+from megrok.z3cform.base.components import GrokForm
 
+from five.grok.meta import ViewSecurityGrokker
+from five.megrok.z3cform.components import FormView
+
+
+def wrap_form_in_view(formClass, view_class=FormView, **kwargs):
+    assert z3c.form.interfaces.IForm.implementedBy(formClass)
+    # generated class must have the same name as the form
+    # to allow template grokking
+    viewClass = type(formClass.__name__, (view_class,), kwargs)
+    viewClass.formClass = formClass
+    viewClass.module_info = formClass.module_info
+    return viewClass
+
+
 class FiveGrokFormGrokker(ViewSecurityGrokker, ViewGrokker):
     martian.component(GrokForm)
     martian.priority(200)
@@ -17,19 +29,11 @@
     martian.directive(grokcore.view.layer, default=IDefaultBrowserLayer)
     martian.directive(grokcore.component.name, get_default=default_view_name)
     martian.directive(grokcore.security.require, name='permission')
-    martian.directive(formview, default=None, name='formwrapper')
 
-    def execute(self, factory, config, context, layer, name, permission,
-                formwrapper, **kw):
-        if formwrapper is None:
-            formwrapper = FormWrapper
-        factory.__view_name__ = name
-        newfactory = wrap_form(factory, formwrapper)
-        newfactory.module_info = factory.module_info
-        factory = newfactory
-        factory.getPhysicalPath = Acquisition.Acquired
-        factory.render = factory.__call__
-
-        ViewSecurityGrokker.execute(self, factory, config, permission, **kw)
-        ViewGrokker.execute(self, factory, config, context, layer, name, **kw)
+    def execute(self, form, config, context, layer, name, permission, **kw):
+        # needed by megrok.z3cform.base
+        form.__view_name__ = name
+        wrappedForm = wrap_form_in_view(form)
+        ViewSecurityGrokker.execute(self, wrappedForm, config, permission, **kw)
+        ViewGrokker.execute(self, wrappedForm, config, context, layer, name, **kw)
         return True

Added: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/form/form_templates/edit.pt
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/form/form_templates/edit.pt	                        (rev 0)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/form/form_templates/edit.pt	2009-12-23 15:41:37 UTC (rev 107012)
@@ -0,0 +1 @@
+<span tal:replace="structure view/form/render" />

Modified: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout.py
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout.py	2009-12-23 15:40:37 UTC (rev 107011)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout.py	2009-12-23 15:41:37 UTC (rev 107012)
@@ -18,7 +18,7 @@
   >>> manfred = Mammoth('manfred')
   >>> edit = getMultiAdapter((manfred, request), name='edit')
   >>> edit
-  <plone.z3cform.layout.MyFormWrapper object at ...>
+  <five.megrok.z3cform.meta.Edit object ...>
   >>> print edit()
     <html xmlns="http://www.w3.org/1999/xhtml">
     <body>
@@ -71,14 +71,10 @@
 import os
 from five import grok
 from five import megrok
-from plone.z3cform.layout import FormWrapper
-from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
 from z3c.form import field
 from zope import interface, schema
 from zope.schema.fieldproperty import FieldProperty
 import five.megrok.z3cform.tests.formwithlayout
-from zope.interface import implements
-from plone.z3cform.interfaces import IFormWrapper
 path = lambda p: os.path.join(os.path.dirname(five.megrok.z3cform.tests.formwithlayout.__file__), p)
 
 
@@ -94,19 +90,7 @@
     age = FieldProperty(IMammoth['age'])
 
 
-class IMammothFormWrapper(IFormWrapper):
-    """
-    Form Wrapper for Mammoth
-    """
-
-
-class MyCoolFormWrapper(FormWrapper):
-    implements(IMammothFormWrapper)
-    index = ViewPageTemplateFile(path('layout.pt'), _prefix='')
-
-
 class Edit(megrok.z3cform.EditForm):
     grok.context(IMammoth)
-    megrok.z3cform.formview(MyCoolFormWrapper)
 
     fields = field.Fields(IMammoth)

Added: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout_templates/edit.pt
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout_templates/edit.pt	                        (rev 0)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/formwithlayout_templates/edit.pt	2009-12-23 15:41:37 UTC (rev 107012)
@@ -0,0 +1,14 @@
+<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">
+<body>
+
+  <h1 tal:content="view/form/label">View Title</h1>
+
+  <div id="layout-contents">
+    <span tal:replace="structure view/form/render" />
+  </div>
+
+</body>
+</html>

Deleted: five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/layout.pt
===================================================================
--- five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/layout.pt	2009-12-23 15:40:37 UTC (rev 107011)
+++ five.megrok.z3cform/branches/based-on-megrok.z3cform.base/src/five/megrok/z3cform/tests/formwithlayout/layout.pt	2009-12-23 15:41:37 UTC (rev 107012)
@@ -1,14 +0,0 @@
-<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">
-<body>
-
-  <h1 tal:content="view/label">View Title</h1>
-
-  <div id="layout-contents">
-    <span tal:replace="structure view/contents" />
-  </div>
-
-</body>
-</html>



More information about the checkins mailing list