[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