[Checkins] SVN: zope.app.tree/tags/3.5.0/ Tag 3.5.0
Dan Korostelev
nadako at gmail.com
Sat Jan 17 11:37:20 EST 2009
Log message for revision 94800:
Tag 3.5.0
Changed:
A zope.app.tree/tags/3.5.0/
D zope.app.tree/tags/3.5.0/CHANGES.txt
A zope.app.tree/tags/3.5.0/CHANGES.txt
D zope.app.tree/tags/3.5.0/buildout.cfg
A zope.app.tree/tags/3.5.0/buildout.cfg
D zope.app.tree/tags/3.5.0/setup.py
A zope.app.tree/tags/3.5.0/setup.py
D zope.app.tree/tags/3.5.0/src/zope/app/tree/SETUP.cfg
D zope.app.tree/tags/3.5.0/src/zope/app/tree/adapters.py
A zope.app.tree/tags/3.5.0/src/zope/app/tree/adapters.py
D zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/__init__.py
A zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/__init__.py
D zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/configure.zcml
A zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/configure.zcml
D zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/cookie.py
A zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/cookie.py
D zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/tests.py
A zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/tests.py
D zope.app.tree/tags/3.5.0/src/zope/app/tree/configure.zcml
A zope.app.tree/tags/3.5.0/src/zope/app/tree/configure.zcml
D zope.app.tree/tags/3.5.0/src/zope/app/tree/tests/test_adapters.py
A zope.app.tree/tags/3.5.0/src/zope/app/tree/tests/test_adapters.py
D zope.app.tree/tags/3.5.0/src/zope/app/tree/tree-configure.zcml
D zope.app.tree/tags/3.5.0/src/zope/app/tree/version.txt
-=-
Deleted: zope.app.tree/tags/3.5.0/CHANGES.txt
===================================================================
--- zope.app.tree/trunk/CHANGES.txt 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/CHANGES.txt 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,8 +0,0 @@
-=======
-CHANGES
-=======
-
-3.4.0 (2007-10-28)
-------------------
-
-- Initial release independent of the main Zope tree.
Copied: zope.app.tree/tags/3.5.0/CHANGES.txt (from rev 94797, zope.app.tree/trunk/CHANGES.txt)
===================================================================
--- zope.app.tree/tags/3.5.0/CHANGES.txt (rev 0)
+++ zope.app.tree/tags/3.5.0/CHANGES.txt 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,27 @@
+=======
+CHANGES
+=======
+
+3.5.0 (2009-01-17)
+------------------
+
+- Get rid of zope.app.zapi dependency, replacing its uses with
+ direct imports.
+
+- Clean up dependencies, move testing and rotterdam dependencies
+ to extra requires.
+
+- Fix mailing list address to zope-dev at zope.org instead of retired
+ zope3-dev at zope.org. Change `cheeseshop` to `pypi` in the package
+ url.
+
+- Replace __used_for__ in adapters.py with zope.component.adapts
+ calls to make more sense.
+
+- Remove obsolete zpkg files, zcml include file for mkzopeinstance-based
+ installations, versions.txt that makes no sense now.
+
+3.4.0 (2007-10-28)
+------------------
+
+- Initial release independent of the main Zope tree.
Deleted: zope.app.tree/tags/3.5.0/buildout.cfg
===================================================================
--- zope.app.tree/trunk/buildout.cfg 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/buildout.cfg 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,7 +0,0 @@
-[buildout]
-develop = .
-parts = test
-
-[test]
-recipe = zc.recipe.testrunner
-eggs = zope.app.tree
Copied: zope.app.tree/tags/3.5.0/buildout.cfg (from rev 94799, zope.app.tree/trunk/buildout.cfg)
===================================================================
--- zope.app.tree/tags/3.5.0/buildout.cfg (rev 0)
+++ zope.app.tree/tags/3.5.0/buildout.cfg 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,7 @@
+[buildout]
+develop = .
+parts = test
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = zope.app.tree [test]
Deleted: zope.app.tree/tags/3.5.0/setup.py
===================================================================
--- zope.app.tree/trunk/setup.py 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/setup.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,73 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2006 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Setup for zope.app.tree package
-
-$Id$
-"""
-import os
-from setuptools import setup, find_packages
-
-def read(*rnames):
- return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
-
-setup(name = 'zope.app.tree',
- version = '3.5.0',
- author='Zope Corporation and Contributors',
- author_email='zope3-dev at zope.org',
- description='Static Tree Implementation',
- long_description=(
- read('README.txt')
- + '\n\n' +
- 'Detailed Dcoumentation\n' +
- '======================\n'
- + '\n\n' +
- read('src', 'zope', 'app', 'tree', 'README.txt')
- + '\n\n' +
- read('CHANGES.txt')
- ),
- keywords = "zope3 tree static zpt",
- classifiers = [
- 'Development Status :: 5 - Production/Stable',
- 'Environment :: Web Environment',
- 'Intended Audience :: Developers',
- 'License :: OSI Approved :: Zope Public License',
- 'Programming Language :: Python',
- 'Natural Language :: English',
- 'Operating System :: OS Independent',
- 'Topic :: Internet :: WWW/HTTP',
- 'Framework :: Zope3'],
- url='http://cheeseshop.python.org/pypi/zope.app.tree',
- license='ZPL 2.1',
- packages=find_packages('src'),
- package_dir = {'': 'src'},
- namespace_packages=['zope', 'zope.app'],
- install_requires = ['setuptools',
- 'zope.app.component',
- 'zope.app.container',
- 'zope.app.folder',
- 'zope.app.rotterdam',
- 'zope.app.skins',
- 'zope.app.testing',
- 'zope.component',
- 'zope.interface',
- 'zope.location',
- 'zope.publisher',
- 'zope.schema',
- 'zope.security',
- 'zope.testing',
- 'zope.traversing',
- ],
- include_package_data = True,
- zip_safe = False,
- )
Copied: zope.app.tree/tags/3.5.0/setup.py (from rev 94797, zope.app.tree/trunk/setup.py)
===================================================================
--- zope.app.tree/tags/3.5.0/setup.py (rev 0)
+++ zope.app.tree/tags/3.5.0/setup.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,70 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Setup for zope.app.tree package
+
+$Id$
+"""
+import os
+from setuptools import setup, find_packages
+
+def read(*rnames):
+ return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
+
+setup(name = 'zope.app.tree',
+ version = '3.5.0',
+ author='Zope Corporation and Contributors',
+ author_email='zope-dev at zope.org',
+ description='Static Tree Implementation',
+ long_description=(
+ read('README.txt')
+ + '\n\n' +
+ 'Detailed Dcoumentation\n' +
+ '======================\n'
+ + '\n\n' +
+ read('src', 'zope', 'app', 'tree', 'README.txt')
+ + '\n\n' +
+ read('CHANGES.txt')
+ ),
+ keywords = "zope3 tree static zpt",
+ classifiers = [
+ 'Development Status :: 5 - Production/Stable',
+ 'Environment :: Web Environment',
+ 'Intended Audience :: Developers',
+ 'License :: OSI Approved :: Zope Public License',
+ 'Programming Language :: Python',
+ 'Natural Language :: English',
+ 'Operating System :: OS Independent',
+ 'Topic :: Internet :: WWW/HTTP',
+ 'Framework :: Zope3'],
+ url='http://pypi.python.org/pypi/zope.app.tree',
+ license='ZPL 2.1',
+ packages=find_packages('src'),
+ package_dir = {'': 'src'},
+ namespace_packages=['zope', 'zope.app'],
+ extras_require={'test': ['zope.app.testing'],
+ 'skin': ['zope.app.rotterdam']
+ },
+ install_requires = ['setuptools',
+ 'zope.app.container',
+ 'zope.component',
+ 'zope.interface',
+ 'zope.location',
+ 'zope.publisher',
+ 'zope.schema',
+ 'zope.security',
+ 'zope.traversing',
+ ],
+ include_package_data = True,
+ zip_safe = False,
+ )
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/SETUP.cfg
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/SETUP.cfg 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/SETUP.cfg 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,5 +0,0 @@
-# Tell zpkg how to install the ZCML slugs.
-
-<data-files zopeskel/etc/package-includes>
- tree-*.zcml
-</data-files>
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/adapters.py
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/adapters.py 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/adapters.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,147 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Object adapters
-
-This module contains adapters necessary to use common objects with
-statictree. The most prominent ones are those for ILocation and
-IContainer. We also provide adapters for any object, so we don't end
-up with ComponentLookupErrors whenever encounter unknown objects.
-
-$Id$
-"""
-from zope.interface import Interface, implements
-from zope.component.interfaces import ComponentLookupError
-from zope.security import canAccess
-from zope.security.interfaces import Unauthorized
-from zope.location.interfaces import ILocation
-from zope.traversing.api import getParents
-
-from zope.app.container.interfaces import IReadContainer
-from zope.app.component.interfaces import ISite
-
-from zope.app.tree.interfaces import IUniqueId, IChildObjects
-
-class StubUniqueId(object):
- implements(IUniqueId)
- __used_for__ = Interface
-
- def __init__(self, context):
- self.context = context
-
- def getId(self):
- # this does not work for persistent objects
- return str(id(self.context))
-
-class StubChildObjects(object):
- implements(IChildObjects)
- __used_for__ = Interface
-
- def __init__(self, context):
- pass
-
- def hasChildren(self):
- return False
-
- def getChildObjects(self):
- return []
-
-class LocationUniqueId(object):
- implements(IUniqueId)
- __used_for__ = ILocation
-
- def __init__(self, context):
- self.context = context
-
- def getId(self):
- context = self.context
- if not context.__name__:
- # always try to be unique
- return str(id(context))
- parents = [context.__name__]
- parents += [parent.__name__ for parent in getParents(context)
- if parent.__name__]
- return '\\'.join(parents)
-
-class ContainerChildObjects(object):
- implements(IChildObjects)
- __used_for__ = IReadContainer
-
- def __init__(self, context):
- self.context = context
-
- def hasChildren(self):
- # make sure we check for access
- try:
- lenght = bool(len(self.context))
- if lenght > 0:
- return True
- else:
- return False
- except Unauthorized:
- return False
-
- def getChildObjects(self):
- if self.hasChildren():
- return self.context.values()
- else:
- return []
-
-class ContainerSiteChildObjects(ContainerChildObjects):
- """Adapter for read containers which are sites as well. The site
- manager will be treated as just another child object.
- """
- __used_for__ = ISite
-
- def hasChildren(self):
- if super(ContainerSiteChildObjects, self).hasChildren():
- return True
- if self._canAccessSiteManager():
- return True
- else:
- return False
-
- def getChildObjects(self):
- if self.hasChildren():
- values = super(ContainerSiteChildObjects, self).getChildObjects()
- if self._canAccessSiteManager():
- return [self.context.getSiteManager()] + list(values)
- else:
- return values
- else:
- return []
-
- def _canAccessSiteManager(self):
- try:
- # the ++etc++ namespace is public this means we get the sitemanager
- # without permissions. But this does not mean we can access it
- # Right now we check the __getitem__ method on the sitemamanger
- # but this means we don't show the ++etc++site link if we have
- # registred views on the sitemanager which have other permission
- # then the __getitem__ method form the interface IReadContainer
- # in the LocalSiteManager.
- # If this will be a problem in the future, we can add a
- # attribute to the SiteManager which we can give individual
- # permissions and check it via canAccess.
- sitemanager = self.context.getSiteManager()
- authorized = canAccess(sitemanager, '__getitem__')
- if authorized:
- return True
- else:
- return False
- except ComponentLookupError:
- return False
- except TypeError:
- # we can't check unproxied objects, but unproxied objects
- # are public.
- return True
Copied: zope.app.tree/tags/3.5.0/src/zope/app/tree/adapters.py (from rev 94797, zope.app.tree/trunk/src/zope/app/tree/adapters.py)
===================================================================
--- zope.app.tree/tags/3.5.0/src/zope/app/tree/adapters.py (rev 0)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/adapters.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,147 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Object adapters
+
+This module contains adapters necessary to use common objects with
+statictree. The most prominent ones are those for ILocation and
+IContainer. We also provide adapters for any object, so we don't end
+up with ComponentLookupErrors whenever encounter unknown objects.
+
+$Id$
+"""
+from zope.interface import Interface, implements
+from zope.component import adapts
+from zope.component.interfaces import ComponentLookupError
+from zope.security import canAccess
+from zope.security.interfaces import Unauthorized
+from zope.location.interfaces import ILocation, ISite
+from zope.traversing.api import getParents
+
+from zope.app.container.interfaces import IReadContainer
+
+from zope.app.tree.interfaces import IUniqueId, IChildObjects
+
+class StubUniqueId(object):
+ implements(IUniqueId)
+ adapts(Interface)
+
+ def __init__(self, context):
+ self.context = context
+
+ def getId(self):
+ # this does not work for persistent objects
+ return str(id(self.context))
+
+class StubChildObjects(object):
+ implements(IChildObjects)
+ adapts(Interface)
+
+ def __init__(self, context):
+ pass
+
+ def hasChildren(self):
+ return False
+
+ def getChildObjects(self):
+ return []
+
+class LocationUniqueId(object):
+ implements(IUniqueId)
+ adapts(ILocation)
+
+ def __init__(self, context):
+ self.context = context
+
+ def getId(self):
+ context = self.context
+ if not context.__name__:
+ # always try to be unique
+ return str(id(context))
+ parents = [context.__name__]
+ parents += [parent.__name__ for parent in getParents(context)
+ if parent.__name__]
+ return '\\'.join(parents)
+
+class ContainerChildObjects(object):
+ implements(IChildObjects)
+ adapts(IReadContainer)
+
+ def __init__(self, context):
+ self.context = context
+
+ def hasChildren(self):
+ # make sure we check for access
+ try:
+ lenght = bool(len(self.context))
+ if lenght > 0:
+ return True
+ else:
+ return False
+ except Unauthorized:
+ return False
+
+ def getChildObjects(self):
+ if self.hasChildren():
+ return self.context.values()
+ else:
+ return []
+
+class ContainerSiteChildObjects(ContainerChildObjects):
+ """Adapter for read containers which are sites as well. The site
+ manager will be treated as just another child object.
+ """
+ adapts(ISite)
+
+ def hasChildren(self):
+ if super(ContainerSiteChildObjects, self).hasChildren():
+ return True
+ if self._canAccessSiteManager():
+ return True
+ else:
+ return False
+
+ def getChildObjects(self):
+ if self.hasChildren():
+ values = super(ContainerSiteChildObjects, self).getChildObjects()
+ if self._canAccessSiteManager():
+ return [self.context.getSiteManager()] + list(values)
+ else:
+ return values
+ else:
+ return []
+
+ def _canAccessSiteManager(self):
+ try:
+ # the ++etc++ namespace is public this means we get the sitemanager
+ # without permissions. But this does not mean we can access it
+ # Right now we check the __getitem__ method on the sitemamanger
+ # but this means we don't show the ++etc++site link if we have
+ # registred views on the sitemanager which have other permission
+ # then the __getitem__ method form the interface IReadContainer
+ # in the LocalSiteManager.
+ # If this will be a problem in the future, we can add a
+ # attribute to the SiteManager which we can give individual
+ # permissions and check it via canAccess.
+ sitemanager = self.context.getSiteManager()
+ authorized = canAccess(sitemanager, '__getitem__')
+ if authorized:
+ return True
+ else:
+ return False
+ except ComponentLookupError:
+ return False
+ except TypeError:
+ # we can't check unproxied objects, but unproxied objects
+ # are public.
+ return True
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/__init__.py
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/browser/__init__.py 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/__init__.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,55 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Browser views
-
-$Id$
-"""
-__docformat__ = 'restructuredtext'
-
-import zope.component
-from zope.publisher.interfaces.browser import IBrowserRequest
-from zope.publisher.browser import BrowserView
-
-from zope.app.tree.interfaces import ITreeStateEncoder
-from zope.app.tree.node import Node
-from zope.app.rotterdam import Rotterdam
-
-class IStaticTreeLayer(IBrowserRequest):
- """Layer that we can register our own navigation macro for."""
-
-class IStaticTreeSkin(IStaticTreeLayer, Rotterdam):
- """Skin based on Rotterdam that includes the static tree
- navigation macro."""
-
-# BBB 2006/02/18, to be removed after 12 months
-try:
- import zope.app.skins
- zope.app.skins.set('StaticTree', IStaticTreeSkin)
-except ImportError:
- pass
-
-class StatefulTreeView(BrowserView):
-
- def statefulTree(self, root=None, filter=None, tree_state=None):
- """Build a tree with tree state information from a request.
- """
- if root is None:
- root = self.context
- expanded_nodes = []
- if tree_state is not None:
- encoder = zope.component.getUtility(ITreeStateEncoder)
- expanded_nodes = encoder.decodeTreeState(tree_state)
- node = Node(root, expanded_nodes, filter)
- node.expand()
- return node
Copied: zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/__init__.py (from rev 94797, zope.app.tree/trunk/src/zope/app/tree/browser/__init__.py)
===================================================================
--- zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/__init__.py (rev 0)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/__init__.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,51 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Browser views
+
+$Id$
+"""
+__docformat__ = 'restructuredtext'
+
+import zope.component
+from zope.publisher.interfaces.browser import IBrowserRequest
+from zope.publisher.browser import BrowserView
+
+from zope.app.tree.interfaces import ITreeStateEncoder
+from zope.app.tree.node import Node
+
+class IStaticTreeLayer(IBrowserRequest):
+ """Layer that we can register our own navigation macro for."""
+
+try: # we try not to depend on zope.app.rotterdam hardly
+ from zope.app.rotterdam import Rotterdam
+ class IStaticTreeSkin(IStaticTreeLayer, Rotterdam):
+ """Skin based on Rotterdam that includes the static tree
+ navigation macro."""
+except ImportError:
+ pass
+
+class StatefulTreeView(BrowserView):
+
+ def statefulTree(self, root=None, filter=None, tree_state=None):
+ """Build a tree with tree state information from a request.
+ """
+ if root is None:
+ root = self.context
+ expanded_nodes = []
+ if tree_state is not None:
+ encoder = zope.component.getUtility(ITreeStateEncoder)
+ expanded_nodes = encoder.decodeTreeState(tree_state)
+ node = Node(root, expanded_nodes, filter)
+ node.expand()
+ return node
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/configure.zcml
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/browser/configure.zcml 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/configure.zcml 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,67 +0,0 @@
-<configure
- xmlns="http://namespaces.zope.org/zope"
- xmlns:browser="http://namespaces.zope.org/browser"
- xmlns:zcml="http://namespaces.zope.org/zcml"
- i18n_domain="zope"
- >
-
- <!-- Register icons -->
-
- <browser:resourceDirectory
- name="tree_images"
- directory="images" />
-
- <!-- Cookie tree -->
-
- <browser:pages
- for="*"
- class=".cookie.CookieTreeView"
- permission="zope.View"
- >
- <browser:page
- name="cookie_tree"
- attribute="cookieTree"
- />
- <browser:page
- name="folder_cookie_tree"
- attribute="folderTree"
- />
- <browser:page
- name="site_cookie_tree"
- attribute="siteTree"
- />
- <browser:page
- name="root_cookie_tree"
- attribute="rootTree"
- />
- <browser:page
- name="virtualhost_cookie_tree"
- attribute="virtualHostTree"
- />
- </browser:pages>
-
- <!-- Set up the 'StaticTree' skin -->
-
- <!-- BBB 2006/02/18, to be removed after 12 months -->
- <browser:layer
- zcml:condition="have deprecatedlayers"
- interface=".IStaticTreeLayer"
- name="statictree"
- bbb_aware="true"
- />
-
- <interface
- interface=".IStaticTreeSkin"
- type="zope.publisher.interfaces.browser.IBrowserSkinType"
- name="StaticTree"
- />
-
- <browser:page
- for="*"
- name="navigation_macros"
- permission="zope.View"
- layer=".IStaticTreeLayer"
- template="navigation_macros.pt"
- />
-
-</configure>
Copied: zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/configure.zcml (from rev 94797, zope.app.tree/trunk/src/zope/app/tree/browser/configure.zcml)
===================================================================
--- zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/configure.zcml (rev 0)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/configure.zcml 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,60 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ xmlns:zcml="http://namespaces.zope.org/zcml"
+ i18n_domain="zope"
+ >
+
+ <!-- Register icons -->
+
+ <browser:resourceDirectory
+ name="tree_images"
+ directory="images" />
+
+ <!-- Cookie tree -->
+
+ <browser:pages
+ for="*"
+ class=".cookie.CookieTreeView"
+ permission="zope.View"
+ >
+ <browser:page
+ name="cookie_tree"
+ attribute="cookieTree"
+ />
+ <browser:page
+ name="folder_cookie_tree"
+ attribute="folderTree"
+ />
+ <browser:page
+ name="site_cookie_tree"
+ attribute="siteTree"
+ />
+ <browser:page
+ name="root_cookie_tree"
+ attribute="rootTree"
+ />
+ <browser:page
+ name="virtualhost_cookie_tree"
+ attribute="virtualHostTree"
+ />
+ </browser:pages>
+
+ <!-- Set up the 'StaticTree' skin -->
+
+ <interface
+ zcml:condition="installed zope.app.rotterdam"
+ interface=".IStaticTreeSkin"
+ type="zope.publisher.interfaces.browser.IBrowserSkinType"
+ name="StaticTree"
+ />
+
+ <browser:page
+ for="*"
+ name="navigation_macros"
+ permission="zope.View"
+ layer=".IStaticTreeLayer"
+ template="navigation_macros.pt"
+ />
+
+</configure>
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/cookie.py
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/browser/cookie.py 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/cookie.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,79 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Stateful cookie tree
-
-$Id$
-"""
-import zope.traversing.api
-from zope.traversing.interfaces import IContainmentRoot
-from zope.component.interfaces import IComponentLookup
-
-from zope.app.container.interfaces import IContainer
-from zope.app.folder.interfaces import IFolder
-from zope.app.component.interfaces import ISite
-
-from zope.app.tree.filters import OnlyInterfacesFilter
-from zope.app.tree.browser import StatefulTreeView
-
-class CookieTreeView(StatefulTreeView):
- """A stateful tree view using cookies to remember the tree state"""
-
- request_variable = 'tree-state'
-
- def cookieTree(self, root=None, filter=None):
- """Build a tree with tree state information from a request.
- """
- request = self.request
- tree_state = request.get(self.request_variable, "")
- tree_state = str(tree_state)
- tree_state = tree_state or None
- if tree_state is not None:
- # set a cookie right away
- request.response.setCookie(self.request_variable,
- tree_state)
- return self.statefulTree(root, filter, tree_state)
-
- def folderTree(self, root=None):
- """Cookie tree with only folders (and site managers).
- """
- filter = OnlyInterfacesFilter(IContainer)
- return self.cookieTree(root, filter)
-
- def siteTree(self):
- """Cookie tree with only folders and the nearest site as root
- node.
- """
- parent = self.context
- for parent in zope.traversing.api.getParents(self.context):
- if ISite.providedBy(parent):
- break
- return self.folderTree(parent)
-
- def rootTree(self):
- """Cookie tree with only folders and the root container as
- root node.
- """
- root = zope.traversing.api.getRoot(self.context)
- return self.folderTree(root)
-
- def virtualHostTree(self):
- """Cookie tree with only folders and the root container as
- root node.
- """
- vh = self.request.getVirtualHostRoot()
- if vh:
- return self.folderTree(vh)
- else:
- root = zope.traversing.api.getRoot(self.context)
- return self.folderTree(root)
Copied: zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/cookie.py (from rev 94797, zope.app.tree/trunk/src/zope/app/tree/browser/cookie.py)
===================================================================
--- zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/cookie.py (rev 0)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/cookie.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,78 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Stateful cookie tree
+
+$Id$
+"""
+import zope.traversing.api
+from zope.traversing.interfaces import IContainmentRoot
+from zope.component.interfaces import IComponentLookup
+from zope.location.interfaces import ISite
+
+from zope.app.container.interfaces import IContainer
+
+from zope.app.tree.filters import OnlyInterfacesFilter
+from zope.app.tree.browser import StatefulTreeView
+
+class CookieTreeView(StatefulTreeView):
+ """A stateful tree view using cookies to remember the tree state"""
+
+ request_variable = 'tree-state'
+
+ def cookieTree(self, root=None, filter=None):
+ """Build a tree with tree state information from a request.
+ """
+ request = self.request
+ tree_state = request.get(self.request_variable, "")
+ tree_state = str(tree_state)
+ tree_state = tree_state or None
+ if tree_state is not None:
+ # set a cookie right away
+ request.response.setCookie(self.request_variable,
+ tree_state)
+ return self.statefulTree(root, filter, tree_state)
+
+ def folderTree(self, root=None):
+ """Cookie tree with only folders (and site managers).
+ """
+ filter = OnlyInterfacesFilter(IContainer)
+ return self.cookieTree(root, filter)
+
+ def siteTree(self):
+ """Cookie tree with only folders and the nearest site as root
+ node.
+ """
+ parent = self.context
+ for parent in zope.traversing.api.getParents(self.context):
+ if ISite.providedBy(parent):
+ break
+ return self.folderTree(parent)
+
+ def rootTree(self):
+ """Cookie tree with only folders and the root container as
+ root node.
+ """
+ root = zope.traversing.api.getRoot(self.context)
+ return self.folderTree(root)
+
+ def virtualHostTree(self):
+ """Cookie tree with only folders and the root container as
+ root node.
+ """
+ vh = self.request.getVirtualHostRoot()
+ if vh:
+ return self.folderTree(vh)
+ else:
+ root = zope.traversing.api.getRoot(self.context)
+ return self.folderTree(root)
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/tests.py
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/browser/tests.py 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/tests.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,102 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Static Tree Tests
-
-$Id$
-"""
-
-import unittest
-import zope.component
-from zope.component import getMultiAdapter
-from zope.publisher.browser import TestRequest
-from zope.interface import alsoProvides
-from zope.traversing.interfaces import IContainmentRoot
-from zope.location.traversing import LocationPhysicallyLocatable
-from zope.app.testing import ztapi
-from zope.app.component.interfaces import ISite
-
-from zope.app.tree.utils import TreeStateEncoder
-from zope.app.tree.browser import StatefulTreeView
-from zope.app.tree.browser.cookie import CookieTreeView
-from zope.app.tree.tests.basetest import BaseTestCase
-
-class StatefulTreeViewTest(BaseTestCase):
-
- def setUp(self):
- super(StatefulTreeViewTest, self).setUp()
- self.makeItems()
- # provide the view for all objects (None)
- ztapi.browserView(None, 'stateful_tree', StatefulTreeView)
-
- def makeRequest(self):
- request = self.request = TestRequest()
-
- # TODO: test stateful tree view
-
-class CookieTreeViewTest(StatefulTreeViewTest):
-
- def setUp(self):
- super(CookieTreeViewTest, self).setUp()
- ztapi.browserView(None, 'cookie_tree', CookieTreeView)
- zope.component.provideAdapter(LocationPhysicallyLocatable)
-
- def makeRequestWithVar(self):
- varname = CookieTreeView.request_variable
- encoder = TreeStateEncoder()
- tree_state = encoder.encodeTreeState(self.expanded_nodes)
- environ = {varname: tree_state}
- request = TestRequest(environ=environ)
- return request
-
- def test_cookie_tree_pre_expanded(self):
- request = self.makeRequestWithVar()
- view = getMultiAdapter((self.root_obj, request),
- name='cookie_tree')
- cookie_tree = view.cookieTree()
- self.assert_(self.root_node.expanded)
- for node in self.root_node.getFlatNodes():
- self.assertEqual(node.expanded, node.getId() in self.expanded_nodes)
-
- def test_cookie_tree_sets_cookie(self):
- request = self.makeRequestWithVar()
- view = getMultiAdapter((self.root_obj, request),
- name='cookie_tree')
- cookie_tree = view.cookieTree()
- self.failIf(request.response.getCookie(view.request_variable) is None)
-
- def test_cookie_tree_site_tree(self):
- request = self.makeRequestWithVar()
- alsoProvides(self.items['a'], IContainmentRoot)
- alsoProvides(self.items['c'], ISite)
- view = getMultiAdapter((self.items['f'], request),
- name='cookie_tree')
- cookie_tree = view.siteTree()
- self.assert_(cookie_tree.context is self.items['c'])
-
- def test_cookie_tree_root_tree(self):
- request = self.makeRequestWithVar()
- alsoProvides(self.items['c'], IContainmentRoot)
- view = getMultiAdapter((self.items['f'], request),
- name='cookie_tree')
- cookie_tree = view.rootTree()
- self.assert_(cookie_tree.context is self.items['c'])
-
-
-def test_suite():
- suite = unittest.makeSuite(StatefulTreeViewTest)
- suite.addTest(unittest.makeSuite(CookieTreeViewTest))
- return suite
-
-if __name__ == '__main__':
- unittest.main(defaultTest='test_suite')
Copied: zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/tests.py (from rev 94797, zope.app.tree/trunk/src/zope/app/tree/browser/tests.py)
===================================================================
--- zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/tests.py (rev 0)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/browser/tests.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,102 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Static Tree Tests
+
+$Id$
+"""
+
+import unittest
+import zope.component
+from zope.component import getMultiAdapter
+from zope.publisher.browser import TestRequest
+from zope.interface import alsoProvides
+from zope.traversing.interfaces import IContainmentRoot
+from zope.location.interfaces import ISite
+from zope.location.traversing import LocationPhysicallyLocatable
+from zope.app.testing import ztapi
+
+from zope.app.tree.utils import TreeStateEncoder
+from zope.app.tree.browser import StatefulTreeView
+from zope.app.tree.browser.cookie import CookieTreeView
+from zope.app.tree.tests.basetest import BaseTestCase
+
+class StatefulTreeViewTest(BaseTestCase):
+
+ def setUp(self):
+ super(StatefulTreeViewTest, self).setUp()
+ self.makeItems()
+ # provide the view for all objects (None)
+ ztapi.browserView(None, 'stateful_tree', StatefulTreeView)
+
+ def makeRequest(self):
+ request = self.request = TestRequest()
+
+ # TODO: test stateful tree view
+
+class CookieTreeViewTest(StatefulTreeViewTest):
+
+ def setUp(self):
+ super(CookieTreeViewTest, self).setUp()
+ ztapi.browserView(None, 'cookie_tree', CookieTreeView)
+ zope.component.provideAdapter(LocationPhysicallyLocatable)
+
+ def makeRequestWithVar(self):
+ varname = CookieTreeView.request_variable
+ encoder = TreeStateEncoder()
+ tree_state = encoder.encodeTreeState(self.expanded_nodes)
+ environ = {varname: tree_state}
+ request = TestRequest(environ=environ)
+ return request
+
+ def test_cookie_tree_pre_expanded(self):
+ request = self.makeRequestWithVar()
+ view = getMultiAdapter((self.root_obj, request),
+ name='cookie_tree')
+ cookie_tree = view.cookieTree()
+ self.assert_(self.root_node.expanded)
+ for node in self.root_node.getFlatNodes():
+ self.assertEqual(node.expanded, node.getId() in self.expanded_nodes)
+
+ def test_cookie_tree_sets_cookie(self):
+ request = self.makeRequestWithVar()
+ view = getMultiAdapter((self.root_obj, request),
+ name='cookie_tree')
+ cookie_tree = view.cookieTree()
+ self.failIf(request.response.getCookie(view.request_variable) is None)
+
+ def test_cookie_tree_site_tree(self):
+ request = self.makeRequestWithVar()
+ alsoProvides(self.items['a'], IContainmentRoot)
+ alsoProvides(self.items['c'], ISite)
+ view = getMultiAdapter((self.items['f'], request),
+ name='cookie_tree')
+ cookie_tree = view.siteTree()
+ self.assert_(cookie_tree.context is self.items['c'])
+
+ def test_cookie_tree_root_tree(self):
+ request = self.makeRequestWithVar()
+ alsoProvides(self.items['c'], IContainmentRoot)
+ view = getMultiAdapter((self.items['f'], request),
+ name='cookie_tree')
+ cookie_tree = view.rootTree()
+ self.assert_(cookie_tree.context is self.items['c'])
+
+
+def test_suite():
+ suite = unittest.makeSuite(StatefulTreeViewTest)
+ suite.addTest(unittest.makeSuite(CookieTreeViewTest))
+ return suite
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/configure.zcml
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/configure.zcml 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/configure.zcml 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,66 +0,0 @@
-<configure
- xmlns="http://namespaces.zope.org/zope"
- i18n_domain="zope"
- >
-
- <class class=".node.Node">
- <allow interface=".interfaces.INode" />
- </class>
-
- <utility
- provides=".interfaces.ITreeStateEncoder"
- factory=".utils.TreeStateEncoder"
- />
-
- <!-- stub adapters -->
-
- <adapter
- provides=".interfaces.IUniqueId"
- for="*"
- factory=".adapters.StubUniqueId"
- />
-
- <adapter
- provides=".interfaces.IChildObjects"
- for="*"
- factory=".adapters.StubChildObjects"
- />
-
- <!-- adapters for zope.app.container machinery -->
-
- <adapter
- provides=".interfaces.IUniqueId"
- for="zope.location.interfaces.ILocation"
- factory=".adapters.LocationUniqueId"
- />
-
- <adapter
- provides=".interfaces.IChildObjects"
- for="zope.app.container.interfaces.IReadContainer"
- factory=".adapters.ContainerChildObjects"
- />
-
- <adapter
- provides=".interfaces.IChildObjects"
- for="zope.app.component.interfaces.ISite"
- factory=".adapters.ContainerSiteChildObjects"
- />
-
- <include package=".browser" />
-
- <!-- Registering documentation with API doc -->
- <configure
- xmlns:apidoc="http://namespaces.zope.org/apidoc"
- xmlns:zcml="http://namespaces.zope.org/zcml"
- zcml:condition="have apidoc">
-
- <apidoc:bookchapter
- id="tree"
- title="Zope Tree"
- doc_path="README.txt"
- />
-
- </configure>
-
-</configure>
-
Copied: zope.app.tree/tags/3.5.0/src/zope/app/tree/configure.zcml (from rev 94798, zope.app.tree/trunk/src/zope/app/tree/configure.zcml)
===================================================================
--- zope.app.tree/tags/3.5.0/src/zope/app/tree/configure.zcml (rev 0)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/configure.zcml 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,66 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ i18n_domain="zope"
+ >
+
+ <class class=".node.Node">
+ <allow interface=".interfaces.INode" />
+ </class>
+
+ <utility
+ provides=".interfaces.ITreeStateEncoder"
+ factory=".utils.TreeStateEncoder"
+ />
+
+ <!-- stub adapters -->
+
+ <adapter
+ provides=".interfaces.IUniqueId"
+ for="*"
+ factory=".adapters.StubUniqueId"
+ />
+
+ <adapter
+ provides=".interfaces.IChildObjects"
+ for="*"
+ factory=".adapters.StubChildObjects"
+ />
+
+ <!-- adapters for zope.app.container machinery -->
+
+ <adapter
+ provides=".interfaces.IUniqueId"
+ for="zope.location.interfaces.ILocation"
+ factory=".adapters.LocationUniqueId"
+ />
+
+ <adapter
+ provides=".interfaces.IChildObjects"
+ for="zope.app.container.interfaces.IReadContainer"
+ factory=".adapters.ContainerChildObjects"
+ />
+
+ <adapter
+ provides=".interfaces.IChildObjects"
+ for="zope.location.interfaces.ISite"
+ factory=".adapters.ContainerSiteChildObjects"
+ />
+
+ <include package=".browser" />
+
+ <!-- Registering documentation with API doc -->
+ <configure
+ xmlns:apidoc="http://namespaces.zope.org/apidoc"
+ xmlns:zcml="http://namespaces.zope.org/zcml"
+ zcml:condition="have apidoc">
+
+ <apidoc:bookchapter
+ id="tree"
+ title="Zope Tree"
+ doc_path="README.txt"
+ />
+
+ </configure>
+
+</configure>
+
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/tests/test_adapters.py
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/tests/test_adapters.py 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/tests/test_adapters.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1,181 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Tree adapter tests
-
-$Id$
-"""
-import unittest
-
-from zope.interface import implements, directlyProvides
-from zope.component.interfaces import ComponentLookupError
-from zope.security.checker import defineChecker
-from zope.security.checker import NamesChecker
-from zope.traversing.interfaces import IContainmentRoot
-from zope.location.interfaces import ILocation
-
-from zope.app.component.interfaces import ISite
-from zope.app.container.interfaces import IReadContainer
-from zope.app.container.sample import SampleContainer
-from zope.app.container.contained import setitem
-from zope.app.testing.placelesssetup import PlacelessSetup
-from zope.app.testing import ztapi
-
-from zope.app.tree.interfaces import IUniqueId, IChildObjects, \
- ITreeStateEncoder
-from zope.app.tree.utils import TreeStateEncoder
-from zope.app.tree.adapters import StubUniqueId, StubChildObjects, \
- LocationUniqueId, ContainerChildObjects, ContainerSiteChildObjects
-
-class SampleContent(object):
- pass
-
-class SampleSite(SampleContainer):
- implements(ISite)
-
- def setSiteManager(self, sm):
- self._sm = sm
-
- def getSiteManager(self):
- try:
- return self._sm
- except AttributeError:
- raise ComponentLookupError
-
-class SiteManagerStub(object):
- """This stub is used for to check the permission on __getitem__."""
-
- def __getitem__(key):
- return 'nada'
-
-class AdapterTestCase(PlacelessSetup, unittest.TestCase):
-
- def setUp(self):
- super(AdapterTestCase, self).setUp()
- # provide necessary components
- ztapi.provideAdapter(None, IUniqueId, StubUniqueId)
- ztapi.provideAdapter(None, IChildObjects, StubChildObjects)
- ztapi.provideAdapter(ILocation, IUniqueId, LocationUniqueId)
- ztapi.provideAdapter(IReadContainer, IChildObjects, ContainerChildObjects)
- ztapi.provideAdapter(ISite, IChildObjects, ContainerSiteChildObjects)
- ztapi.provideUtility(ITreeStateEncoder, TreeStateEncoder())
- self.makeObjects()
-
- def makeObjects(self):
- checker = NamesChecker(['__getitem__'])
- defineChecker(SiteManagerStub, checker)
- self.futurama = futurama = SampleSite()
- directlyProvides(futurama, IContainmentRoot)
- planetexpress = SampleContainer()
- robotfactory = SampleContainer()
- nimbus = SampleContainer()
- omicronpersei = SampleSite()
-
- bender = SampleContent()
- fry = SampleContent()
- leela = SampleContent()
- mom = SampleContent()
- zapp = SampleContent()
- kif = SampleContent()
-
- setitem(futurama, futurama.__setitem__, 'planetexpress', planetexpress)
- setitem(futurama, futurama.__setitem__, 'robotfactory', robotfactory)
- setitem(futurama, futurama.__setitem__, 'nimbus', nimbus)
- setitem(futurama, futurama.__setitem__, 'omicronpersei', omicronpersei)
-
- setitem(planetexpress, planetexpress.__setitem__, 'bender', bender)
- setitem(planetexpress, planetexpress.__setitem__, 'fry', fry)
- setitem(planetexpress, planetexpress.__setitem__, 'leela', leela)
- setitem(robotfactory, robotfactory.__setitem__, 'mom', mom)
- setitem(nimbus, nimbus.__setitem__, 'zapp', zapp)
- setitem(nimbus, nimbus.__setitem__, 'kif', kif)
-
- def test_stub_adapters(self):
- # test content unique id
- farnesworth = SampleContent()
- elzar = SampleContent()
- adapter = IUniqueId(farnesworth)
- adapter2 = IUniqueId(elzar)
- self.failIf(adapter.getId() == 'farnesworth')
- self.failIf(adapter2.getId() == 'elzar')
- # test for uniqueness
- self.failIf(adapter.getId() == adapter2.getId())
-
- # test content child objects
- adapter = IChildObjects(elzar)
- self.failIf(adapter.hasChildren())
- self.assert_(len(adapter.getChildObjects()) == 0)
- # test with acquired content
- bender = self.futurama['planetexpress']['bender']
- adapter = IChildObjects(bender)
- self.failIf(adapter.hasChildren())
- self.assert_(len(adapter.getChildObjects()) == 0)
-
- def test_location_uniqueid(self):
- # futurama does not have a name
- futurama = self.futurama
- adapter = IUniqueId(futurama)
- self.assertEqual(adapter.getId(), str(id(futurama)))
-
- # test container
- planetexpress = self.futurama['planetexpress']
- adapter = IUniqueId(planetexpress)
- self.assertEqual(adapter.getId(), 'planetexpress')
-
- # test content
- bender = self.futurama['planetexpress']['bender']
- adapter = IUniqueId(bender)
- self.assertEqual(adapter.getId(), r'bender\planetexpress')
-
- def test_container_childobjects(self):
- # test container with children
- futurama = self.futurama
- adapter = IChildObjects(futurama)
- self.assert_(adapter.hasChildren())
- self.assertEqual(adapter.getChildObjects(), futurama.values())
-
- # test acquired container with children
- planetexpress = self.futurama['planetexpress']
- adapter = IChildObjects(planetexpress)
- self.assert_(adapter.hasChildren())
- self.assertEqual(adapter.getChildObjects(), planetexpress.values())
-
- # test acquired container w/o children
- omicronpersei = self.futurama['omicronpersei']
- adapter = IChildObjects(omicronpersei)
- self.failIf(adapter.hasChildren())
- self.assertEqual(adapter.getChildObjects(), [])
-
- def test_container_site(self):
- sm = SiteManagerStub()
- futurama = self.futurama
- omicronpersei = self.futurama['omicronpersei']
-
- # test behaviour before and after setting a site
- adapter = IChildObjects(futurama)
- self.assert_(adapter.hasChildren())
- self.assertEqual(adapter.getChildObjects(), futurama.values())
- futurama.setSiteManager(sm)
- self.assert_(sm in adapter.getChildObjects())
-
- adapter = IChildObjects(omicronpersei)
- self.failIf(adapter.hasChildren())
- omicronpersei.setSiteManager(sm)
- self.assert_(adapter.hasChildren())
- self.assertEqual(adapter.getChildObjects(), [sm])
-
-def test_suite():
- return unittest.makeSuite(AdapterTestCase)
-
-if __name__ == '__main__':
- unittest.main(defaultTest='test_suite')
Copied: zope.app.tree/tags/3.5.0/src/zope/app/tree/tests/test_adapters.py (from rev 94797, zope.app.tree/trunk/src/zope/app/tree/tests/test_adapters.py)
===================================================================
--- zope.app.tree/tags/3.5.0/src/zope/app/tree/tests/test_adapters.py (rev 0)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/tests/test_adapters.py 2009-01-17 16:37:20 UTC (rev 94800)
@@ -0,0 +1,180 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Tree adapter tests
+
+$Id$
+"""
+import unittest
+
+from zope.interface import implements, directlyProvides
+from zope.component.interfaces import ComponentLookupError
+from zope.security.checker import defineChecker
+from zope.security.checker import NamesChecker
+from zope.traversing.interfaces import IContainmentRoot
+from zope.location.interfaces import ILocation, ISite
+
+from zope.app.container.interfaces import IReadContainer
+from zope.app.container.sample import SampleContainer
+from zope.app.container.contained import setitem
+from zope.app.testing.placelesssetup import PlacelessSetup
+from zope.app.testing import ztapi
+
+from zope.app.tree.interfaces import IUniqueId, IChildObjects, \
+ ITreeStateEncoder
+from zope.app.tree.utils import TreeStateEncoder
+from zope.app.tree.adapters import StubUniqueId, StubChildObjects, \
+ LocationUniqueId, ContainerChildObjects, ContainerSiteChildObjects
+
+class SampleContent(object):
+ pass
+
+class SampleSite(SampleContainer):
+ implements(ISite)
+
+ def setSiteManager(self, sm):
+ self._sm = sm
+
+ def getSiteManager(self):
+ try:
+ return self._sm
+ except AttributeError:
+ raise ComponentLookupError
+
+class SiteManagerStub(object):
+ """This stub is used for to check the permission on __getitem__."""
+
+ def __getitem__(key):
+ return 'nada'
+
+class AdapterTestCase(PlacelessSetup, unittest.TestCase):
+
+ def setUp(self):
+ super(AdapterTestCase, self).setUp()
+ # provide necessary components
+ ztapi.provideAdapter(None, IUniqueId, StubUniqueId)
+ ztapi.provideAdapter(None, IChildObjects, StubChildObjects)
+ ztapi.provideAdapter(ILocation, IUniqueId, LocationUniqueId)
+ ztapi.provideAdapter(IReadContainer, IChildObjects, ContainerChildObjects)
+ ztapi.provideAdapter(ISite, IChildObjects, ContainerSiteChildObjects)
+ ztapi.provideUtility(ITreeStateEncoder, TreeStateEncoder())
+ self.makeObjects()
+
+ def makeObjects(self):
+ checker = NamesChecker(['__getitem__'])
+ defineChecker(SiteManagerStub, checker)
+ self.futurama = futurama = SampleSite()
+ directlyProvides(futurama, IContainmentRoot)
+ planetexpress = SampleContainer()
+ robotfactory = SampleContainer()
+ nimbus = SampleContainer()
+ omicronpersei = SampleSite()
+
+ bender = SampleContent()
+ fry = SampleContent()
+ leela = SampleContent()
+ mom = SampleContent()
+ zapp = SampleContent()
+ kif = SampleContent()
+
+ setitem(futurama, futurama.__setitem__, 'planetexpress', planetexpress)
+ setitem(futurama, futurama.__setitem__, 'robotfactory', robotfactory)
+ setitem(futurama, futurama.__setitem__, 'nimbus', nimbus)
+ setitem(futurama, futurama.__setitem__, 'omicronpersei', omicronpersei)
+
+ setitem(planetexpress, planetexpress.__setitem__, 'bender', bender)
+ setitem(planetexpress, planetexpress.__setitem__, 'fry', fry)
+ setitem(planetexpress, planetexpress.__setitem__, 'leela', leela)
+ setitem(robotfactory, robotfactory.__setitem__, 'mom', mom)
+ setitem(nimbus, nimbus.__setitem__, 'zapp', zapp)
+ setitem(nimbus, nimbus.__setitem__, 'kif', kif)
+
+ def test_stub_adapters(self):
+ # test content unique id
+ farnesworth = SampleContent()
+ elzar = SampleContent()
+ adapter = IUniqueId(farnesworth)
+ adapter2 = IUniqueId(elzar)
+ self.failIf(adapter.getId() == 'farnesworth')
+ self.failIf(adapter2.getId() == 'elzar')
+ # test for uniqueness
+ self.failIf(adapter.getId() == adapter2.getId())
+
+ # test content child objects
+ adapter = IChildObjects(elzar)
+ self.failIf(adapter.hasChildren())
+ self.assert_(len(adapter.getChildObjects()) == 0)
+ # test with acquired content
+ bender = self.futurama['planetexpress']['bender']
+ adapter = IChildObjects(bender)
+ self.failIf(adapter.hasChildren())
+ self.assert_(len(adapter.getChildObjects()) == 0)
+
+ def test_location_uniqueid(self):
+ # futurama does not have a name
+ futurama = self.futurama
+ adapter = IUniqueId(futurama)
+ self.assertEqual(adapter.getId(), str(id(futurama)))
+
+ # test container
+ planetexpress = self.futurama['planetexpress']
+ adapter = IUniqueId(planetexpress)
+ self.assertEqual(adapter.getId(), 'planetexpress')
+
+ # test content
+ bender = self.futurama['planetexpress']['bender']
+ adapter = IUniqueId(bender)
+ self.assertEqual(adapter.getId(), r'bender\planetexpress')
+
+ def test_container_childobjects(self):
+ # test container with children
+ futurama = self.futurama
+ adapter = IChildObjects(futurama)
+ self.assert_(adapter.hasChildren())
+ self.assertEqual(adapter.getChildObjects(), futurama.values())
+
+ # test acquired container with children
+ planetexpress = self.futurama['planetexpress']
+ adapter = IChildObjects(planetexpress)
+ self.assert_(adapter.hasChildren())
+ self.assertEqual(adapter.getChildObjects(), planetexpress.values())
+
+ # test acquired container w/o children
+ omicronpersei = self.futurama['omicronpersei']
+ adapter = IChildObjects(omicronpersei)
+ self.failIf(adapter.hasChildren())
+ self.assertEqual(adapter.getChildObjects(), [])
+
+ def test_container_site(self):
+ sm = SiteManagerStub()
+ futurama = self.futurama
+ omicronpersei = self.futurama['omicronpersei']
+
+ # test behaviour before and after setting a site
+ adapter = IChildObjects(futurama)
+ self.assert_(adapter.hasChildren())
+ self.assertEqual(adapter.getChildObjects(), futurama.values())
+ futurama.setSiteManager(sm)
+ self.assert_(sm in adapter.getChildObjects())
+
+ adapter = IChildObjects(omicronpersei)
+ self.failIf(adapter.hasChildren())
+ omicronpersei.setSiteManager(sm)
+ self.assert_(adapter.hasChildren())
+ self.assertEqual(adapter.getChildObjects(), [sm])
+
+def test_suite():
+ return unittest.makeSuite(AdapterTestCase)
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/tree-configure.zcml
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/tree-configure.zcml 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/tree-configure.zcml 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1 +0,0 @@
-<include package="zope.app.tree"/>
Deleted: zope.app.tree/tags/3.5.0/src/zope/app/tree/version.txt
===================================================================
--- zope.app.tree/trunk/src/zope/app/tree/version.txt 2009-01-17 13:37:36 UTC (rev 94794)
+++ zope.app.tree/tags/3.5.0/src/zope/app/tree/version.txt 2009-01-17 16:37:20 UTC (rev 94800)
@@ -1 +0,0 @@
-ZopeTree 1.2
\ No newline at end of file
More information about the Checkins
mailing list