[Checkins] SVN: five.grok/trunk/ Make formlib support optional.
Sylvain Viollow
cvs-admin at zope.org
Wed May 2 08:41:51 UTC 2012
Log message for revision 125565:
Make formlib support optional.
Changed:
U five.grok/trunk/buildout.cfg
U five.grok/trunk/docs/HISTORY.txt
U five.grok/trunk/setup.py
U five.grok/trunk/src/five/grok/__init__.py
U five.grok/trunk/src/five/grok/components.py
U five.grok/trunk/src/five/grok/configure.zcml
U five.grok/trunk/src/five/grok/interfaces.py
U five.grok/trunk/src/five/grok/meta.py
U five.grok/trunk/src/five/grok/meta.zcml
-=-
Modified: five.grok/trunk/buildout.cfg
===================================================================
--- five.grok/trunk/buildout.cfg 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/buildout.cfg 2012-05-02 08:41:47 UTC (rev 125565)
@@ -11,12 +11,12 @@
[versions]
plone.recipe.zope2instance =
-grokcore.annotation = 1.2
-grokcore.component = 2.4
-grokcore.formlib = 1.8
-grokcore.security = 1.5
-grokcore.site = 1.5
-grokcore.view = 2.6.1
+grokcore.annotation = 1.3
+grokcore.component = 2.5
+grokcore.formlib = 1.9
+grokcore.security = 1.6
+grokcore.site = 1.6.1
+grokcore.view = 2.7
grokcore.viewlet = 1.9
five.localsitemanager = 2.0.5
five.formlib = 1.0.4
@@ -46,5 +46,6 @@
[test]
recipe = zc.recipe.testrunner
-eggs = ${instance:eggs}
+eggs =
+ five.grok [test]
defaults = ['-m', 'five.grok', '--tests-pattern', '^f?tests$', '-v']
Modified: five.grok/trunk/docs/HISTORY.txt
===================================================================
--- five.grok/trunk/docs/HISTORY.txt 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/docs/HISTORY.txt 2012-05-02 08:41:47 UTC (rev 125565)
@@ -1,11 +1,15 @@
Changelog
=========
-1.4.0 (unreleased)
+1.3.1 (unreleased)
------------------
-- ...
+- Make formlib support optional. This is not included by default. If
+ you whish to use formlib, you need to include the extra ``form`` for
+ ``five.grok``. Example::
+ five.grok [form] >= 1.3.1
+
1.3.0 (2011-11-07)
------------------
Modified: five.grok/trunk/setup.py
===================================================================
--- five.grok/trunk/setup.py 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/setup.py 2012-05-02 08:41:47 UTC (rev 125565)
@@ -3,6 +3,14 @@
version = '1.4.0dev'
+form_requires = [
+ 'grokcore.formlib >= 1.4',
+ 'five.formlib',
+ 'zope.formlib',
+ ]
+test_requires = form_requires + [
+ ]
+
setup(name='five.grok',
version=version,
description="Grok-like layer for Zope 2",
@@ -30,12 +38,10 @@
'setuptools',
'martian',
'Zope2>=2.13',
- 'five.formlib',
'five.localsitemanager > 2.0dev',
'grokcore.annotation',
- 'grokcore.component',
- 'grokcore.formlib >= 1.4',
- 'grokcore.security',
+ 'grokcore.component >= 2.5',
+ 'grokcore.security [role] >= 1.6.1',
'grokcore.site',
'grokcore.view >= 1.12.1',
'grokcore.viewlet >= 1.3',
@@ -43,11 +49,13 @@
'zope.component',
'zope.container',
'zope.contentprovider',
- 'zope.formlib',
'zope.interface',
'zope.location',
'zope.pagetemplate',
'zope.publisher',
'zope.traversing',
],
+ extras_require={
+ 'form': form_requires,
+ 'test': form_requires},
)
Modified: five.grok/trunk/src/five/grok/__init__.py
===================================================================
--- five.grok/trunk/src/five/grok/__init__.py 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/src/five/grok/__init__.py 2012-05-02 08:41:47 UTC (rev 125565)
@@ -18,13 +18,9 @@
from grokcore.site import *
from grokcore.view import *
from grokcore.viewlet import *
-from grokcore.formlib import *
from five.grok.components import Model, Container, Site, LocalUtility
-from five.grok.components import Form, AddForm
-from five.grok.components import EditForm, DisplayForm
from five.grok.components import View, ViewletManager
-from five.grok.formlib import AutoFields
# Override the one from grokcore.view so that we get Zope 2 semantics
@@ -35,5 +31,11 @@
from five.grok.components import ZopeTwoDirectoryResource as DirectoryResource
# Only export public API
-from five.grok.interfaces import IFiveGrokAPI
+from five.grok.interfaces import IFiveGrokAPI, HAVE_FORMLIB
+if HAVE_FORMLIB:
+ from grokcore.formlib import *
+ from five.grok.components import Form, AddForm
+ from five.grok.components import EditForm, DisplayForm
+ from five.grok.formlib import AutoFields
+
__all__ = list(IFiveGrokAPI)
Modified: five.grok/trunk/src/five/grok/components.py
===================================================================
--- five.grok/trunk/src/five/grok/components.py 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/src/five/grok/components.py 2012-05-02 08:41:47 UTC (rev 125565)
@@ -21,17 +21,14 @@
from zope.location.interfaces import IPossibleSite
from zope import interface
-from five.formlib import formbase
-
from grokcore.component.interfaces import IContext
-from grokcore.formlib.components import GrokForm as BaseGrokForm
-from grokcore.formlib.components import default_display_template, \
- default_form_template
from grokcore.view.components import PageTemplate
from grokcore.viewlet.components import ViewletManager as BaseViewletManager
from grokcore.site.components import BaseSite
import grokcore.view
+from five.grok.interfaces import HAVE_FORMLIB
+
from Products.Five.browser.pagetemplatefile import ViewMapper
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from Products.Five.browser.pagetemplatefile import getEngine
@@ -175,51 +172,58 @@
return resource
-# forms from formlib
-class GrokForm(BaseGrokForm):
+# Viewlet / Viewlet Manager
- def __init__(self, *args):
- super(GrokForm, self).__init__(*args)
- self.__name__ = self.__view_name__
+class ViewletManager(BaseViewletManager, ZopeTwoBaseViewletManager):
-class Form(GrokForm, formbase.PageForm, View):
martian.baseclass()
- template = default_form_template
+ def filter(self, viewlets):
+ # XXX Need Zope 2 filter
+ return ZopeTwoBaseViewletManager.filter(self, viewlets)
-class AddForm(GrokForm, formbase.AddForm, View):
- martian.baseclass()
- template = default_form_template
+ def __getitem__(self, key):
+ # XXX Need Zope 2 __getitem__
+ return ZopeTwoBaseViewletManager.__getitem__(self, key)
+if HAVE_FORMLIB:
+ from five.formlib import formbase
+ from grokcore.formlib.components import GrokForm as BaseGrokForm
+ from grokcore.formlib.components import default_display_template, \
+ default_form_template
-class EditForm(GrokForm, formbase.EditForm, View):
- martian.baseclass()
- template = default_form_template
+ # forms from formlib
- # grokcore.formlib defines empty actions since 1.1. Restore save
- # option here.
- actions = formbase.EditForm.actions
+ class GrokForm(BaseGrokForm):
+ def __init__(self, *args):
+ super(GrokForm, self).__init__(*args)
+ self.__name__ = self.__view_name__
-class DisplayForm(GrokForm, formbase.DisplayForm, View):
- martian.baseclass()
- template = default_display_template
+ class Form(GrokForm, formbase.PageForm, View):
+ martian.baseclass()
+ template = default_form_template
-# Viewlet / Viewlet Manager
+ class AddForm(GrokForm, formbase.AddForm, View):
+ martian.baseclass()
+ template = default_form_template
-class ViewletManager(BaseViewletManager, ZopeTwoBaseViewletManager):
- martian.baseclass()
+ class EditForm(GrokForm, formbase.EditForm, View):
+ martian.baseclass()
+ template = default_form_template
- def filter(self, viewlets):
- # XXX Need Zope 2 filter
- return ZopeTwoBaseViewletManager.filter(self, viewlets)
+ # grokcore.formlib defines empty actions since 1.1. Restore save
+ # option here.
+ actions = formbase.EditForm.actions
- def __getitem__(self, key):
- # XXX Need Zope 2 __getitem__
- return ZopeTwoBaseViewletManager.__getitem__(self, key)
+ class DisplayForm(GrokForm, formbase.DisplayForm, View):
+ martian.baseclass()
+ template = default_display_template
+
+
Modified: five.grok/trunk/src/five/grok/configure.zcml
===================================================================
--- five.grok/trunk/src/five/grok/configure.zcml 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/src/five/grok/configure.zcml 2012-05-02 08:41:47 UTC (rev 125565)
@@ -11,7 +11,8 @@
<include package="Products.Five" />
<include package="five.grok" file="meta.zcml" />
- <include package="five.formlib" />
+ <include package="five.formlib"
+ zcml:condition="installed five.formlib" />
<include package="five.localsitemanager" />
<include package="grokcore.annotation" />
<include package="grokcore.view" />
Modified: five.grok/trunk/src/five/grok/interfaces.py
===================================================================
--- five.grok/trunk/src/five/grok/interfaces.py 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/src/five/grok/interfaces.py 2012-05-02 08:41:47 UTC (rev 125565)
@@ -18,9 +18,20 @@
import grokcore.site.interfaces
import grokcore.view.interfaces
import grokcore.viewlet.interfaces
-import grokcore.formlib.interfaces
+try:
+ from grokcore.formlib.interfaces import IGrokcoreFormlibAPI
+ HAVE_FORMLIB = True
+except ImportError:
+ from zope.interface import Interface
+
+ class IGrokcoreFormlibAPI(Interface):
+ """Empty FormlibAPI
+ """
+ HAVE_FORMLIB = False
+
+
class IFiveGrokView(grokcore.view.interfaces.IGrokView):
"""A five.grok view is a specific implementation of a
grokcore.view.View.
@@ -33,6 +44,6 @@
grokcore.site.interfaces.IGrokcoreSiteAPI,
grokcore.view.interfaces.IGrokcoreViewAPI,
grokcore.viewlet.interfaces.IGrokcoreViewletAPI,
- grokcore.formlib.interfaces.IGrokcoreFormlibAPI):
+ IGrokcoreFormlibAPI):
"""Official five.grok API.
"""
Modified: five.grok/trunk/src/five/grok/meta.py
===================================================================
--- five.grok/trunk/src/five/grok/meta.py 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/src/five/grok/meta.py 2012-05-02 08:41:47 UTC (rev 125565)
@@ -12,10 +12,11 @@
#
##############################################################################
-from five.grok import components, formlib
+from five.grok import components
from grokcore.view.meta.directoryresource import _get_resource_path
-from zope import interface, component
+from zope import interface
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+
import five.grok
import grokcore.component
import grokcore.security
@@ -26,19 +27,22 @@
from App.class_init import InitializeClass as initializeClass
-class FormGrokker(martian.ClassGrokker):
- martian.component(components.GrokForm)
- martian.directive(grokcore.component.context)
- martian.priority(800) # Must be run before real formlib grokker.
+if components.HAVE_FORMLIB:
+ from five.grok import formlib
- def execute(self, factory, config, context, **kw):
- # Set up form_fields from context class if they haven't been
- # configured manually already using our version of get_auto_fields
- if getattr(factory, 'form_fields', None) is None:
- factory.form_fields = formlib.get_auto_fields(context)
- return True
+ class FormGrokker(martian.ClassGrokker):
+ martian.component(components.GrokForm)
+ martian.directive(grokcore.component.context)
+ martian.priority(800) # Must be run before real formlib grokker.
+ def execute(self, factory, config, context, **kw):
+ # Set up form_fields from context class if they haven't been
+ # configured manually already using our version of get_auto_fields
+ if getattr(factory, 'form_fields', None) is None:
+ factory.form_fields = formlib.get_auto_fields(context)
+ return True
+
class ViewSecurityGrokker(martian.ClassGrokker):
martian.component(five.grok.View)
martian.directive(grokcore.security.require, name='permission')
@@ -71,7 +75,7 @@
config.action(
discriminator=('adapter', adapts, provides, name),
- callable=component.provideAdapter,
+ callable=grokcore.component.util.provideAdapter,
args=(resource_factory, adapts, provides, name),
)
return True
Modified: five.grok/trunk/src/five/grok/meta.zcml
===================================================================
--- five.grok/trunk/src/five/grok/meta.zcml 2012-05-02 08:41:20 UTC (rev 125564)
+++ five.grok/trunk/src/five/grok/meta.zcml 2012-05-02 08:41:47 UTC (rev 125565)
@@ -1,6 +1,6 @@
<configure
xmlns="http://namespaces.zope.org/zope"
- xmlns:meta="http://namespaces.zope.org/meta"
+ xmlns:zcml="http://namespaces.zope.org/zcml"
xmlns:grok="http://namespaces.zope.org/grok">
<include package="grokcore.component" file="meta.zcml" />
@@ -11,8 +11,10 @@
<!-- Load minimal support of grokcore.view, views + templates -->
<include package="grokcore.view" file="meta-minimal.zcml" />
<include package="grokcore.viewlet" file="meta.zcml" />
- <include package="grokcore.formlib" file="meta.zcml" />
+ <include package="grokcore.formlib" file="meta.zcml"
+ zcml:condition="installed grokcore.formlib" />
+
<!-- Include skin support as well -->
<grok:grok package="grokcore.view.meta.skin" />
More information about the checkins
mailing list