[Zope-Checkins] SVN: Zope/branches/2.10-with-ZODB3.8/ merged r76174:78105 from the zope 2.10 branch

Andreas Zeidler az at zitc.de
Wed Jul 18 10:28:59 EDT 2007


Log message for revision 78110:
  merged r76174:78105 from the zope 2.10 branch
  

Changed:
  U   Zope/branches/2.10-with-ZODB3.8/doc/CHANGES.txt
  U   Zope/branches/2.10-with-ZODB3.8/inst/WinBuilders/mk/zope.mk
  U   Zope/branches/2.10-with-ZODB3.8/inst/versions.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/AccessControl/Role.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Application.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/subscribers.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testCopySupportEvents.py
  _U  Zope/branches/2.10-with-ZODB3.8/lib/python/Products/
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/Expressions.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PythonScripts/tests/testPythonScript.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Products/__init__.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/RestrictedPython/RCompile.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/PortalTestCase.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/ZopeLite.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/__init__.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt
  A   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/testpackage/
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testFunctionalDocTest.py
  A   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testZopeDocTest.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/BaseRequest.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/HTTPRequest.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testBaseRequest.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testHTTPRequest.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/handlers.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/tests/test_schema.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/zopeschema.xml
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/Resource.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/__init__.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/tests/testResource.py
  _U  Zope/branches/2.10-with-ZODB3.8/lib/python/zope/
  _U  Zope/branches/2.10-with-ZODB3.8/lib/python/zope/app/
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/zope/app/EXTERNALS.txt
  U   Zope/branches/2.10-with-ZODB3.8/skel/etc/zope.conf.in

-=-
Modified: Zope/branches/2.10-with-ZODB3.8/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/doc/CHANGES.txt	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/doc/CHANGES.txt	2007-07-18 14:28:59 UTC (rev 78110)
@@ -8,10 +8,38 @@
 
       - Backported feature from Zope 2.11 to support named temporary files.
 
-  Zope 2.10.4 (unreleased)
+  Zope 2.10.4 (23.06.2007)
 
+    Other changes
+
+      - updated to ZODB 3.7.1
+
+      - updated to Zope 3.3.2
+
     Bugs fixed
 
+      - Collector #1306: Missing acquisition context on local roles screen.
+
+      - Collector #2153: Supporting unquoted cookies with spaces.
+
+      - The REQUEST no longer accepts holds after it has been closed.
+
+      - Collector #1441: WebDAV compatibility with Windows Web Folders
+        restored by adding a configuration variable that controls the
+        sending of the non-standard MS-Author-Via and Public
+        headers. Thanks for PatrickD for the the hard work coming up
+        with an initial patch.  
+        (http://zope.org/Collectors/Zope/1441)
+
+      - Fixed bug in ZPublisher.BaseRequest with persistent site managers. An
+        EndRequestEvent was thrown after the ZODB connection was already
+        closed and thus the site manager not being available anymore.
+
+      - Collector #2295: Comments in PythonScripts could lead to syntax
+        errors
+
+      - Collector #2307: ObjectCopiedEvent not dispatched to sublocations.
+
       - Collector #2304: fixed markup issue in ptEdit.zpt
 
       - Collector #2260: fixed Examples.zexp
@@ -1314,9 +1342,9 @@
        x86_64 systems
 
      - ZReST: the charset used in the rendered HTML was not set to the
-       corresponding output_encoding property of the ZReST instance. In addition
-       changing the encodings through the Properties tab did not re-render
-       the HTML.
+       corresponding output_encoding property of the ZReST
+       instance. In addition changing the encodings through the
+       Properties tab did not re-render the HTML.
 
      - Collector #1234: an exception triple passed to LOG() was not
        propagated properly to the logging module of Python

Modified: Zope/branches/2.10-with-ZODB3.8/inst/WinBuilders/mk/zope.mk
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/inst/WinBuilders/mk/zope.mk	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/inst/WinBuilders/mk/zope.mk	2007-07-18 14:28:59 UTC (rev 78110)
@@ -1,4 +1,4 @@
-ZOPEVERSION = 2.10.3-final
+ZOPEVERSION = 2.10.4-final
 ZOPEDIRNAME := Zope-$(ZOPEVERSION)
 
 ZOPE_REQUIRED_FILES=tmp/$(ZOPEDIRNAME).tgz

Modified: Zope/branches/2.10-with-ZODB3.8/inst/versions.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/inst/versions.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/inst/versions.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -1,5 +1,5 @@
 ZOPE_MAJOR_VERSION  = '2.10'
-ZOPE_MINOR_VERSION  = '3'
+ZOPE_MINOR_VERSION  = '4'
 ZOPE_BRANCH_NAME    = '$Name$'[6:] or 'no-branch'
 
 # always start prerelease branches with '0' to avoid upgrade

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/AccessControl/Role.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/AccessControl/Role.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/AccessControl/Role.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -345,11 +345,12 @@
                 if mlu < 0: raise OverflowError
                 un = getattr(aclu, 'user_names', _notfound)
                 if un is not _notfound:
+                    un = aclu.__of__(item).user_names # rewrap
                     unl = un()
                     # maxlistusers of 0 is list all
                     if len(unl) > mlu and mlu != 0:
                         raise OverflowError
-                    for name in un():
+                    for name in unl:
                         dict[name]=1
             item = getattr(item, 'aq_parent', _notfound)
             if item is _notfound:

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Application.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Application.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Application.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -633,6 +633,11 @@
         install_product(app, product_dir, product_name, meta_types,
                         folder_permissions, raise_exc=debug_mode)
 
+    # Delayed install of packages-as-products
+    for module, init_func in Products._packages_to_initialize:
+        install_package(app, module, init_func, raise_exc=debug_mode)
+    Products._packages_to_initialize = []
+
     Products.meta_types=Products.meta_types+tuple(meta_types)
     InitializeClass(Folder.Folder)
 
@@ -861,6 +866,34 @@
             if raise_exc:
                 raise
 
+
+def install_package(app, module, init_func, raise_exc=False, log_exc=True):
+    """Installs a Python package like a product."""
+    try:
+        product = App.Product.initializeProduct(module,
+                                                module.__name__,
+                                                module.__path__[0],
+                                                app)
+        product.package_name = module.__name__
+        if init_func is not None:
+            newContext = ProductContext(product, app, module)
+            init_func(newContext)
+
+        if not doInstall():
+            transaction.abort()
+        else:
+            transaction.get().note('Installed package %s' % module.__name__)
+            transaction.commit()
+
+    except:
+        if log_exc:
+            LOG.error("Couldn't install %s" % module.__name__,
+                      exc_info=True)
+        transaction.abort()
+        if raise_exc:
+            raise
+
+
 def install_standards(app):
     # Check to see if we've already done this before
     # Don't do it twice (Casey)

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/subscribers.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/subscribers.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/subscribers.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -31,6 +31,7 @@
 import zope.location.interfaces
 from zope.app.container.contained import dispatchToSublocations
 from zope.app.container.interfaces import IObjectMovedEvent
+from zope.lifecycleevent.interfaces import IObjectCopiedEvent
 
 deprecatedManageAddDeleteClasses = []
 
@@ -130,7 +131,15 @@
     if OFS.interfaces.IObjectManager.providedBy(ob):
         dispatchToSublocations(ob, event)
 
+ at zope.component.adapter(OFS.interfaces.IItem, IObjectCopiedEvent)
+def dispatchObjectCopiedEvent(ob, event):
+    """Multi-subscriber for IItem + IObjectCopiedEvent.
+    """
+    # Dispatch to sublocations
+    if OFS.interfaces.IObjectManager.providedBy(ob):
+        dispatchToSublocations(ob, event)
 
+
 def callManageAfterAdd(ob, item, container):
     """Compatibility subscriber for manage_afterAdd.
     """

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testCopySupportEvents.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testCopySupportEvents.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testCopySupportEvents.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -224,7 +224,7 @@
         self.subfolder.manage_clone(self.folder.myfolder, 'myfolder')
         self.assertEqual(eventlog.called(),
             [('myfolder', 'ObjectCopiedEvent'),
-             #('mydoc', 'ObjectCopiedEvent'),
+             ('mydoc', 'ObjectCopiedEvent'),
              ('myfolder', 'ObjectWillBeAddedEvent'),
              ('mydoc', 'ObjectWillBeAddedEvent'),
              ('myfolder', 'ObjectAddedEvent'),
@@ -240,7 +240,7 @@
         self.subfolder.manage_pasteObjects(cb)
         self.assertEqual(eventlog.called(),
             [('myfolder', 'ObjectCopiedEvent'),
-             #('mydoc', 'ObjectCopiedEvent'),
+             ('mydoc', 'ObjectCopiedEvent'),
              ('myfolder', 'ObjectWillBeAddedEvent'),
              ('mydoc', 'ObjectWillBeAddedEvent'),
              ('myfolder', 'ObjectAddedEvent'),
@@ -282,7 +282,7 @@
         self.folder.myfolder.COPY(req, req.RESPONSE)
         self.assertEqual(eventlog.called(),
             [('myfolder', 'ObjectCopiedEvent'),
-             #('mydoc', 'ObjectCopiedEvent'),
+             ('mydoc', 'ObjectCopiedEvent'),
              ('myfolder', 'ObjectWillBeAddedEvent'),
              ('mydoc', 'ObjectWillBeAddedEvent'),
              ('myfolder', 'ObjectAddedEvent'),


Property changes on: Zope/branches/2.10-with-ZODB3.8/lib/python/Products
___________________________________________________________________
Name: svn:externals
   - Five    svn://svn.zope.org/repos/main/Products.Five/tags/1.5.2-plus-registerPackage-fix

   + Five    svn://svn.zope.org/repos/main/Products.Five/tags/1.5.5


Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/Expressions.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/Expressions.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/Expressions.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -83,6 +83,26 @@
                                          request=request)
     return object
 
+def trustedBoboAwareZopeTraverse(object, path_items, econtext):
+    """Traverses a sequence of names, first trying attributes then items.
+
+    This uses Zope 3 path traversal where possible and interacts
+    correctly with objects providing OFS.interface.ITraversable when
+    necessary (bobo-awareness).
+    """
+    request = getattr(econtext, 'request', None)
+    path_items = list(path_items)
+    path_items.reverse()
+
+    while path_items:
+        name = path_items.pop()
+        if OFS.interfaces.ITraversable.providedBy(object):
+            object = object.unrestrictedTraverse(name)
+        else:
+            object = traversePathElement(object, name, path_items,
+                                         request=request)
+    return object
+
 def render(ob, ns):
     """Calls the object, possibly a document template, or just returns
     it if not callable.  (From DT_Util.py)
@@ -108,11 +128,13 @@
 
 class ZopePathExpr(PathExpr):
 
+    _TRAVERSER = staticmethod(boboAwareZopeTraverse)
+
     def __init__(self, name, expr, engine):
         if not expr.strip():
             expr = 'nothing'
         super(ZopePathExpr, self).__init__(name, expr, engine,
-                                           boboAwareZopeTraverse)
+                                           self._TRAVERSER)
 
     # override this to support different call metrics (see bottom of
     # method) and Zope 2's traversal exceptions (ZopeUndefs instead of
@@ -150,6 +172,9 @@
                 return 1
         return 0
 
+class TrustedZopePathExpr(ZopePathExpr):
+    _TRAVERSER = staticmethod(trustedBoboAwareZopeTraverse)
+
 class SafeMapping(MultiMapping):
     """Mapping with security declarations and limited method exposure.
 
@@ -335,11 +360,11 @@
             return False
         return ob1 == ob2
 
-def createZopeEngine():
+def createZopeEngine(zpe=ZopePathExpr):
     e = ZopeEngine()
     e.iteratorFactory = PathIterator
-    for pt in ZopePathExpr._default_type_names:
-        e.registerType(pt, ZopePathExpr)
+    for pt in zpe._default_type_names:
+        e.registerType(pt, zpe)
     e.registerType('string', StringExpr)
     e.registerType('python', ZRPythonExpr.PythonExpr)
     e.registerType('not', NotExpr)
@@ -352,7 +377,7 @@
 def createTrustedZopeEngine():
     # same as createZopeEngine, but use non-restricted Python
     # expression evaluator
-    e = createZopeEngine()
+    e = createZopeEngine(TrustedZopePathExpr)
     e.types['python'] = PythonExpr
     return e
 

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PythonScripts/tests/testPythonScript.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PythonScripts/tests/testPythonScript.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PythonScripts/tests/testPythonScript.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -128,6 +128,9 @@
         res = self._newPS('return 1 * 5 + 4 / 2 - 6')()
         self.assertEqual(res, 1)
 
+    def testCollector2295(self):
+        res = self._newPS('if False:\n  pass\n#hi')
+
     def testReduce(self):
         res = self._newPS('return reduce(lambda x, y: x + y, [1,3,5,7])')()
         self.assertEqual(res, 16)

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Products/__init__.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Products/__init__.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Products/__init__.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -11,3 +11,8 @@
 #
 ##############################################################################
 __ac_permissions__=()
+
+# This is used to keep track of packages which need to be initialized as
+# products. These will be processed during the usual product installation
+# in OFS.Application
+_packages_to_initialize = []
\ No newline at end of file

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/RestrictedPython/RCompile.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/RestrictedPython/RCompile.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/RestrictedPython/RCompile.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -43,7 +43,7 @@
 
     def __init__(self, source, filename):
         if source:
-            source = '\n'.join(source.splitlines())
+            source = '\n'.join(source.splitlines()) + '\n'
         self.rm = RestrictionMutator()
         AbstractCompileMode.__init__(self, source, filename)
 
@@ -209,7 +209,7 @@
     def __init__(self, p, body, name, filename, globals):
         self.params = p
         if body:
-            body = '\n'.join(body.splitlines())
+            body = '\n'.join(body.splitlines()) + '\n'
         self.body = body
         self.name = name
         self.globals = globals or []

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/PortalTestCase.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/PortalTestCase.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/PortalTestCase.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -100,7 +100,10 @@
             self.portal.clearCurrentSkin()
         else: # CMF 1.4
             self.portal._v_skindata = None
-        self.portal.setupCurrentSkin()
+        try:
+            self.portal.setupCurrentSkin(self.app.REQUEST)
+        except TypeError:
+            self.portal.setupCurrentSkin()
 
     # Portal interface
 

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/ZopeLite.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/ZopeLite.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/ZopeLite.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -132,12 +132,14 @@
 
 # Allow test authors to install Zope products into the test environment. Note
 # that installProduct() must be called at module level -- never from tests.
-from OFS.Application import get_folder_permissions, get_products, install_product
+from OFS.Application import get_folder_permissions, get_products
+from OFS.Application import install_product, install_package
 from OFS.Folder import Folder
 import Products
 
 _theApp = Zope2.app()
 _installedProducts = {}
+_installedPackages = {}
 
 def hasProduct(name):
     '''Checks if a product can be found along Products.__path__'''
@@ -164,6 +166,27 @@
             if name != 'SomeProduct':   # Ignore the skeleton tests :-P
                 if not quiet: _print('Installing %s ... NOT FOUND\n' % name)
 
+def hasPackage(name):
+    '''Checks if a package has been registered with five:registerPackage.'''
+    return name in [m.__name__ for m in getattr(Products, '_registered_packages', [])]
+
+def installPackage(name, quiet=0):
+    '''Installs a registered Python package like a Zope product.'''
+    start = time.time()
+    if _patched and not _installedPackages.has_key(name):
+        for module, init_func in Products._packages_to_initialize:
+            if module.__name__ == name:
+                if not quiet: _print('Installing %s ... ' % module.__name__)
+                # We want to fail immediately if a package throws an exception
+                # during install, so we set the raise_exc flag.
+                install_package(_theApp, module, init_func, raise_exc=1)
+                _installedPackages[module.__name__] = 1
+                Products._packages_to_initialize.remove((module, init_func))
+                if not quiet: _print('done (%.3fs)\n' % (time.time() - start))
+                break
+        else:
+            if not quiet: _print('Installing %s ... NOT FOUND\n' % name)
+
 def _load_control_panel():
     # Loading the Control_Panel of an existing ZODB may take
     # a while; print another dot if it does.
@@ -193,6 +216,7 @@
 configure = Zope2.configure
 def startup(): pass
 Zope = Zope2
+active = _patched
 
 # ZODB sandbox factory
 from ZODB.DemoStorage import DemoStorage

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/__init__.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/__init__.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/__init__.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -20,6 +20,8 @@
 
 from ZopeLite import hasProduct
 from ZopeLite import installProduct
+from ZopeLite import hasPackage
+from ZopeLite import installPackage
 from ZopeLite import _print
 
 from ZopeTestCase import folder_name

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt	2007-07-18 14:28:59 UTC (rev 78110)
@@ -14,6 +14,9 @@
   publish_module(). Thanks to Andreas Zeidler.
 - Fixed doctestsuite factory to copy layers from test_class to the suite.
   Thanks to Whit Morris.
+- Added hasPackage and installPackage functions for dealing with "products"
+  registered via five:registerPackage.
+- Provide access to test globs in doctest setUp and tearDown.
 
 0.9.8 (Zope 2.8 edition)
 - Renamed 'doctest' package to 'zopedoctest' because of name-shadowing

Copied: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/testpackage (from rev 78105, Zope/branches/2.10/lib/python/Testing/ZopeTestCase/testpackage)

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -253,6 +253,7 @@
             if hasattr(test_instance, 'portal'):
                 test.globs['portal'] = test_instance.portal
                 test.globs['portal_name'] = test_instance.portal.getId()
+            test_instance.globs = test.globs
             if kwsetUp is not None:
                 kwsetUp(test_instance)
 

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testFunctionalDocTest.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testFunctionalDocTest.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testFunctionalDocTest.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -38,6 +38,9 @@
     Content-Type: text/plain; charset=...
     <BLANKLINE>
     index
+
+    >>> foo
+    1
     '''
     self.folder.addDTMLDocument('index_html', file='index')
 
@@ -55,7 +58,9 @@
 </dtml-in>'''
     self.folder.addDTMLMethod('show_cookies', file=show_cookies)
 
+    self.globs['foo'] = 1
 
+
 def test_suite():
     return TestSuite((
         FunctionalDocTestSuite(setUp=setUp),

Copied: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py (from rev 78105, Zope/branches/2.10/lib/python/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py)
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py	                        (rev 0)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -0,0 +1,122 @@
+##############################################################################
+#
+# Copyright (c) 2005 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.
+#
+##############################################################################
+"""Tests for installPackage
+
+$Id$
+"""
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from unittest import TestSuite
+from Testing import ZopeTestCase
+from Testing.ZopeTestCase import ZopeLite
+from Testing.ZopeTestCase import ZopeDocTestSuite
+from Products.Five import zcml
+from zope.testing import cleanup
+import Products
+
+
+def testInstallPackage():
+    """
+    Test if installPackage works.
+
+      >>> from Testing import ZopeTestCase
+      >>> from Products.Five import zcml
+
+    Register testpackage
+
+      >>> ZopeTestCase.hasPackage('testpackage')
+      False
+
+      >>> config = '''
+      ... <configure
+      ...     xmlns:five="http://namespaces.zope.org/five">
+      ...   <five:registerPackage
+      ...     package="testpackage"
+      ...     initialize="testpackage.initialize"
+      ...     />
+      ... </configure>'''
+      >>> zcml.load_string(config)
+
+    The package is registered now
+
+      >>> ZopeTestCase.hasPackage('testpackage')
+      True
+
+    But not yet installed
+
+      >>> app = self._app()
+      >>> 'testpackage' in app.Control_Panel.Products.objectIds()
+      False
+
+    Install it
+
+      >>> ZopeTestCase.installPackage('testpackage', quiet=True)
+      testpackage.initialize called
+
+    Now it shows up in Control_Panel
+
+      >>> app = self._app()
+      >>> 'testpackage' in app.Control_Panel.Products.objectIds()
+      True
+
+    hasPackage still returns True
+
+      >>> ZopeTestCase.hasPackage('testpackage')
+      True
+
+    A package is only installed once, subsequent calls to installPackage
+    are ignored:
+
+      >>> ZopeTestCase.installPackage('testpackage', quiet=True)
+    """
+
+
+class TestClass(ZopeTestCase.FunctionalTestCase):
+
+    def afterSetUp(self):
+        cleanup.cleanUp()
+        zcml._initialized = False
+        zcml.load_site()
+
+        self.saved = sys.path[:]
+        sys.path.append(ZopeTestCase.__path__[0])
+
+    def afterClear(self):
+        cleanup.cleanUp()
+        sys.path[:] = self.saved
+
+        registered = getattr(Products, '_registered_packages', None)
+        if registered is not None:
+            Products._registered_packages = [m for m in registered
+                                             if m.__name__ != 'testpackage']
+
+        to_initialize = getattr(Products, '_packages_to_initialize', None)
+        if to_initialize is not None:
+            Products._packages_to_initialize = [(m, f) for (m, f) in to_initialize
+                                                if m.__name__ != 'testpackage']
+
+
+def test_suite():
+    if ZopeLite.active:
+        return TestSuite((
+            ZopeDocTestSuite(test_class=TestClass),
+        ))
+    else:
+        return TestSuite()
+
+if __name__ == '__main__':
+    framework()
+

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testZopeDocTest.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testZopeDocTest.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/zopedoctest/testZopeDocTest.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -12,7 +12,7 @@
 ##############################################################################
 """Example Zope doctest
 
-$Id: testZopeDocTest.py,v 1.2 2005/03/26 18:07:08 shh42 Exp $
+$Id$
 """
 
 import os, sys
@@ -29,8 +29,12 @@
 
     >>> 'object' in folder.objectIds()
     True
+
+    >>> foo
+    1
     '''
     self.folder.manage_addFolder('object', '')
+    self.globs['foo'] = 1
 
 
 def test_suite():

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/BaseRequest.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/BaseRequest.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/BaseRequest.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -202,8 +202,8 @@
 
     def close(self):
         self.other.clear()
+        notify(EndRequestEvent(None, self))
         self._held=None
-        notify(EndRequestEvent(None, self))
 
     def processInputs(self):
         """Do any input processing that could raise errors
@@ -634,7 +634,8 @@
     def _hold(self, object):
         """Hold a reference to an object to delay it's destruction until mine
         """
-        self._held=self._held+(object,)
+        if self._held is not None:
+            self._held=self._held+(object,)
 
 def exec_callables(callables):
     result = None

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/HTTPRequest.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/HTTPRequest.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/HTTPRequest.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -1475,7 +1475,7 @@
                  qparmre=re.compile(
                     '([\x00- ]*([^\x00- ;,="]+)="([^"]*)"([\x00- ]*[;,])?[\x00- ]*)'),
                  parmre=re.compile(
-                    '([\x00- ]*([^\x00- ;,="]+)=([^\x00- ;,"]*)([\x00- ]*[;,])?[\x00- ]*)'),
+                    '([\x00- ]*([^\x00- ;,="]+)=([^;,"]*)([\x00- ]*[;,])?[\x00- ]*)'),
                  paramlessre=re.compile(
                     '([\x00- ]*([^\x00- ;,="]+)[\x00- ]*[;,][\x00- ]*)'),
 

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testBaseRequest.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testBaseRequest.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testBaseRequest.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -247,6 +247,17 @@
         self.assertRaises(NotFound, r.traverse, 'folder/simpleSet')
         self.assertRaises(NotFound, r.traverse, 'folder/simpleFrozenSet')
 
+    def test_hold_after_close(self):
+        # Request should no longer accept holds after it has been closed
+        r = self.makeBaseRequest()
+        r._hold(lambda x: None)
+        self.assertEqual(len(r._held), 1)
+        r.close()
+        # No more holding from now on
+        self.assertEqual(r._held, None)
+        r._hold(lambda x: None)
+        self.assertEqual(r._held, None)
+
 from ZPublisher import NotFound
 
 import zope.interface

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testHTTPRequest.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testHTTPRequest.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testHTTPRequest.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -658,6 +658,20 @@
         self.assertEquals(req.cookies['hmm'], '')
         self.assertEquals(req.cookies['baz'], 'gee')
 
+	# Unquoted multi-space cookies
+        env['HTTP_COOKIE'] = 'single=cookie data; ' \
+	                     'quoted="cookie data with unquoted spaces"; ' \
+			     'multi=cookie data with unquoted spaces; ' \
+			     'multi2=cookie data with unquoted spaces'
+        req = self._getHTTPRequest(env)
+        self.assertEquals(req.cookies['single'], 'cookie data')
+        self.assertEquals(req.cookies['quoted'], 
+	                              'cookie data with unquoted spaces')
+        self.assertEquals(req.cookies['multi'], 
+	                              'cookie data with unquoted spaces')
+        self.assertEquals(req.cookies['multi2'], 
+	                              'cookie data with unquoted spaces')
+
 TEST_ENVIRON = {
     'CONTENT_TYPE': 'multipart/form-data; boundary=12345',
     'REQUEST_METHOD': 'POST',

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/handlers.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/handlers.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/handlers.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -150,6 +150,14 @@
 def http_header_max_length(value):
     return value
 
+def enable_ms_author_via(value):
+    import webdav
+    webdav.enable_ms_author_via = value
+
+def enable_ms_public_header(value):
+    import webdav
+    webdav.enable_ms_public_header = value
+
 def catalog_getObject_raises(value):
 
     if value is not None:

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/tests/test_schema.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/tests/test_schema.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/tests/test_schema.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -95,6 +95,50 @@
         items.sort()
         self.assertEqual(items, [("FEARFACTORY", "rocks"), ("NSYNC","doesnt")])
 
+    def test_ms_author_via(self):
+        import webdav
+        from Zope2.Startup.handlers import handleConfig
+
+        default_setting = webdav.enable_ms_author_via
+        try:
+            conf, handler = self.load_config_text("""\
+                instancehome <<INSTANCE_HOME>>
+                enable-ms-author-via true
+                """)
+            handleConfig(None, handler)
+            self.assert_(webdav.enable_ms_author_via == True)
+
+            conf, handler = self.load_config_text("""\
+                instancehome <<INSTANCE_HOME>>
+                enable-ms-author-via false
+                """)
+            handleConfig(None, handler)
+            self.assert_(webdav.enable_ms_author_via == False)
+        finally:
+            webdav.enable_ms_author_via = default_setting
+
+    def test_ms_public_header(self):
+        import webdav
+        from Zope2.Startup.handlers import handleConfig
+
+        default_setting = webdav.enable_ms_public_header
+        try:
+            conf, handler = self.load_config_text("""\
+                instancehome <<INSTANCE_HOME>>
+                enable-ms-public-header true
+                """)
+            handleConfig(None, handler)
+            self.assert_(webdav.enable_ms_public_header == True)
+
+            conf, handler = self.load_config_text("""\
+                instancehome <<INSTANCE_HOME>>
+                enable-ms-public-header false
+                """)
+            handleConfig(None, handler)
+            self.assert_(webdav.enable_ms_public_header == False)
+        finally:
+            webdav.enable_ms_public_header = default_setting
+
     def test_path(self):
         p1 = tempfile.mktemp()
         p2 = tempfile.mktemp()

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/zopeschema.xml
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/zopeschema.xml	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/zopeschema.xml	2007-07-18 14:28:59 UTC (rev 78110)
@@ -553,6 +553,63 @@
     </description>
   </key>
 
+  <key name="enable-ms-author-via" datatype="boolean" handler="enable_ms_author_via" default="off">
+     <description>
+     Set this directive to 'true' to enable the "MS-Author-Via" header
+     in response to an OPTIONS WebDAV request. Early versions of
+     Microsoft Web Folders and Microsoft Office require this header to
+     be present to be able to connect to Zope via WebDAV.
+
+     This is disabled by default since it makes a lot of standards-compliant
+     things unhappy AND it tricks Microsoft Office into trying to edit Office
+     files stored in Zope via WebDAV even when the user isn't allowed to edit
+     them and is only trying to download them.
+
+     Check this collector entry for more information:
+     http://www.zope.org/Collectors/Zope/1441
+
+     Recent versions of Microsoft Web Folders, updated after January
+     2005, do not require this header anymore, and instead require a
+     "Public" header to be present in reply to the OPTIONS WebDAV
+     request.
+     (http://www.redmountainsw.com/wordpress/archives/webfolders-zope)
+ 
+     To get a recent Microsoft Web Folders implementation, refer to
+     Microsoft KB Article 907306.
+     (Software Update for Web Folders: May 18, 2007).
+     </description>
+     <metadefault>off</metadefault>
+  </key>
+
+  <key name="enable-ms-public-header" datatype="boolean" handler="enable_ms_public_header" default="off">
+     <description>
+     Set this directive to 'on' to enable sending the "Public" header
+     in response to an WebDAV OPTIONS request.
+
+     Though recent WebDAV drafts mention this header, the original
+     WebDAV RFC did not mention it as part of the standard. Very few
+     web servers out there include this header in their replies, most
+     notably IIS and Netscape Enterprise 3.6.
+
+     Since many best practices documents out in the web mention
+     turning off this header with the subject of "Mask Your Web Server
+     For Enhanced Security", this setting is off by
+     default. Presumably malicious people might take the presence of
+     this header as indication of an IIS Web Server and try to attack
+     your site, so be careful when turning it on.
+
+     Recent versions of Microsoft Web Folders, updated after January
+     2005, *do* require this header to be present in reply to the
+     OPTIONS WebDAV request.
+     (http://www.redmountainsw.com/wordpress/archives/webfolders-zope)
+ 
+     To get a recent Microsoft Web Folders implementation, refer to
+     Microsoft KB Article 907306.
+     (Software Update for Web Folders: May 18, 2007).
+     </description>
+     <metadefault>off</metadefault>
+  </key>
+
   <key name="dns-server" datatype=".dns_resolver" attribute="dns_resolver">
     <description>
      Specify the IP address of your DNS server in order to cause resolved

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/Resource.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/Resource.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/Resource.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -18,8 +18,10 @@
 import mimetypes
 import sys
 import warnings
+import re
 from urllib import unquote
 
+import webdav
 import ExtensionClass
 from Globals import InitializeClass
 from AccessControl import getSecurityManager
@@ -54,6 +56,7 @@
 from OFS.event import ObjectWillBeMovedEvent
 import OFS.subscribers
 
+ms_dav_agent = re.compile("Microsoft.*Internet Publishing.*")
 
 class Resource(ExtensionClass.Base, Lockable.LockableItem):
 
@@ -213,6 +216,15 @@
         RESPONSE.setHeader('Allow', ', '.join(self.__http_methods__))
         RESPONSE.setHeader('Content-Length', 0)
         RESPONSE.setHeader('DAV', '1,2', 1)
+
+        # Microsoft Web Folders compatibility, only enabled if
+        # User-Agent matches.
+        if ms_dav_agent.match(REQUEST.get_header('User-Agent', '')):
+            if webdav.enable_ms_public_header:
+                RESPONSE.setHeader('Public', ', '.join(self.__http_methods__))
+            if webdav.enable_ms_author_via:
+                RESPONSE.setHeader('MS-Author-Via', 'DAV')
+
         RESPONSE.setStatus(200)
         return RESPONSE
 

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/__init__.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/__init__.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/__init__.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -36,3 +36,6 @@
    Microsoft, U.C. Irvine, Netscape, Novell.  February, 1999."""
 
 __version__='$Revision: 1.7 $'[11:-2]
+
+enable_ms_author_via = False
+enable_ms_public_header = False

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/tests/testResource.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/tests/testResource.py	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/webdav/tests/testResource.py	2007-07-18 14:28:59 UTC (rev 78110)
@@ -1,6 +1,24 @@
 import unittest
 
+MS_DAV_AGENT = "Microsoft Data Access Internet Publishing Provider DAV"
 
+def make_request_response(environ=None):
+    from StringIO import StringIO
+    from ZPublisher.HTTPRequest import HTTPRequest
+    from ZPublisher.HTTPResponse import HTTPResponse
+    
+    if environ is None:
+        environ = {}
+
+    stdout = StringIO()
+    stdin = StringIO()
+    resp = HTTPResponse(stdout=stdout)
+    environ.setdefault('SERVER_NAME', 'foo')
+    environ.setdefault('SERVER_PORT', '80')
+    environ.setdefault('REQUEST_METHOD', 'GET')
+    req = HTTPRequest(stdin, environ, resp)
+    return req, resp
+
 class TestResource(unittest.TestCase):
 
     def test_z3interfaces(self):
@@ -12,7 +30,61 @@
         verifyClass(IDAVResource, Resource)
         verifyClass(IWriteLock, Resource)
 
+    def test_ms_author_via(self):
+        import webdav
+        from webdav.Resource import Resource
 
+        default_settings = webdav.enable_ms_author_via
+        try:
+            req, resp = make_request_response()
+            resource = Resource()
+            resource.OPTIONS(req, resp)
+            self.assert_(not resp.headers.has_key('ms-author-via'))
+
+            webdav.enable_ms_author_via = True
+            req, resp = make_request_response()
+            resource = Resource()
+            resource.OPTIONS(req, resp)
+            self.assert_(not resp.headers.has_key('ms-author-via'))
+
+            req, resp = make_request_response(
+                environ={'USER_AGENT': MS_DAV_AGENT})
+            resource = Resource()
+            resource.OPTIONS(req, resp)
+            self.assert_(resp.headers.has_key('ms-author-via'))
+            self.assert_(resp.headers['ms-author-via'] == 'DAV')
+
+        finally:
+            webdav.enable_ms_author_via = default_settings
+
+    def test_ms_public_header(self):
+        import webdav
+        from webdav.Resource import Resource
+        default_settings = webdav.enable_ms_public_header
+        try:
+            req, resp = make_request_response()
+            resource = Resource()
+            resource.OPTIONS(req, resp)
+            self.assert_(not resp.headers.has_key('public'))
+
+            webdav.enable_ms_public_header = True
+            req, resp = make_request_response()
+            resource = Resource()
+            resource.OPTIONS(req, resp)
+            self.assert_(not resp.headers.has_key('public'))
+            self.assert_(resp.headers.has_key('allow'))
+
+            req, resp = make_request_response(
+                environ={'USER_AGENT': MS_DAV_AGENT})
+            resource = Resource()
+            resource.OPTIONS(req, resp)
+            self.assert_(resp.headers.has_key('public'))
+            self.assert_(resp.headers.has_key('allow'))
+            self.assert_(resp.headers['public'] == resp.headers['allow'])
+
+        finally:
+            webdav.enable_ms_public_header = default_settings
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(TestResource),


Property changes on: Zope/branches/2.10-with-ZODB3.8/lib/python/zope
___________________________________________________________________
Name: svn:externals
   - annotation           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/annotation
cachedescriptors     svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/cachedescriptors
component            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/component
configuration        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/configuration
contentprovider      svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/contentprovider
contenttype          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/contenttype
copypastemove        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/copypastemove
datetime             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/datetime
decorator            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/decorator
deferredimport       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/deferredimport
deprecation          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/deprecation
documenttemplate     svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/documenttemplate
dottedname           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/dottedname
dublincore           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/dublincore
event                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/event
exceptions           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/exceptions
filerepresentation   svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/filerepresentation
formlib              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/formlib
hookable             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/hookable
i18n                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/i18n
i18nmessageid        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/i18nmessageid
index                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/index
interface            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/interface
lifecycleevent       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/lifecycleevent
location             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/location
modulealias          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/modulealias
pagetemplate         svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/pagetemplate
proxy                svn://svn.zope.org/repos/main/zope.proxy/trunk/src/zope/proxy
publisher            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/publisher
rdb                  svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/rdb
schema               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/schema
security             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/security
sendmail             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/sendmail
server               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/server
size                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/size
structuredtext       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/structuredtext
tal                  svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/tal
tales                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/tales
testbrowser          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/testbrowser
testing              svn://svn.zope.org/repos/main/zope.testing/tags/3.0/src/zope/testing
thread               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/thread
traversing           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/traversing
viewlet              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/viewlet
wfmc                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/wfmc


   + annotation           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/annotation
cachedescriptors     svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/cachedescriptors
component            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/component
configuration        svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/configuration
contentprovider      svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/contentprovider
contenttype          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/contenttype
copypastemove        svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/copypastemove
datetime             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/datetime
decorator            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/decorator
deferredimport       svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/deferredimport
deprecation          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/deprecation
documenttemplate     svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/documenttemplate
dottedname           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/dottedname
dublincore           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/dublincore
event                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/event
exceptions           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/exceptions
filerepresentation   svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/filerepresentation
formlib              svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/formlib
hookable             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/hookable
i18n                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/i18n
i18nmessageid        svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/i18nmessageid
index                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/index
interface            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/interface
lifecycleevent       svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/lifecycleevent
location             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/location
modulealias          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/modulealias
pagetemplate         svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/pagetemplate
proxy                svn://svn.zope.org/repos/main/zope.proxy/trunk/src/zope/proxy
publisher            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/publisher
rdb                  svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/rdb
schema               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/schema
security             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/security
sendmail             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/sendmail
server               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/server
size                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/size
structuredtext       svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/structuredtext
tal                  svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/tal
tales                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/tales
testbrowser          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/testbrowser
testing              svn://svn.zope.org/repos/main/zope.testing/tags/3.0/src/zope/testing
thread               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/thread
traversing           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/traversing
viewlet              svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/viewlet
wfmc                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/wfmc



Property changes on: Zope/branches/2.10-with-ZODB3.8/lib/python/zope/app
___________________________________________________________________
Name: svn:externals
   - annotation          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/annotation
apidoc              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/apidoc
applicationcontrol  svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/applicationcontrol
appsetup            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/appsetup
authentication      svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/authentication
basicskin           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/basicskin
broken              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/broken
cache               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/cache
component           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/component
container           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/container
content             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/content
content_types       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/content_types
copypastemove       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/copypastemove
datetimeutils       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/datetimeutils
debug               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/debug
decorator           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/decorator
dependable          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/dependable
dtmlpage            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/dtmlpage
dublincore          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/dublincore
error               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/error
event               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/event
exception           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/exception
file                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/file
filerepresentation  svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/filerepresentation
folder              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/folder
form                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/form
ftests              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/ftests
generations         svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/generations
http                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/http
i18n                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/i18n
interface           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/interface
intid               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/intid
introspector        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/introspector
keyreference        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/keyreference
layers              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/layers
locales             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/locales
location            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/location
mail                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/mail
onlinehelp          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/onlinehelp
pagetemplate        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/pagetemplate
preference          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/preference
preview             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/preview
principalannotation svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/principalannotation
publication         svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/publication
publisher           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/publisher
rdb                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/rdb
renderer            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/renderer
rotterdam           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/rotterdam
schema              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/schema
security            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/security
servicenames        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/servicenames
session             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/session
site                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/site
size                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/size
skins               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/skins
sqlscript           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/sqlscript
testing             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/testing
tests               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/tests
timezones           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/timezones
traversing          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/traversing
tree                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/tree
undo                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/undo
wfmc                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/wfmc
wsgi                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/wsgi
zapi                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/zapi
zopeappgenerations  svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/zopeappgenerations
zptpage             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/zptpage

   + annotation          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/annotation
apidoc              svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/apidoc
applicationcontrol  svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/applicationcontrol
appsetup            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/appsetup
authentication      svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/authentication
basicskin           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/basicskin
broken              svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/broken
cache               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/cache
component           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/component
container           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/container
content             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/content
content_types       svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/content_types
copypastemove       svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/copypastemove
datetimeutils       svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/datetimeutils
debug               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/debug
decorator           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/decorator
dependable          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/dependable
dtmlpage            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/dtmlpage
dublincore          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/dublincore
error               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/error
event               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/event
exception           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/exception
file                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/file
filerepresentation  svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/filerepresentation
folder              svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/folder
form                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/form
ftests              svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/ftests
generations         svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/generations
http                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/http
i18n                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/i18n
interface           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/interface
intid               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/intid
introspector        svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/introspector
keyreference        svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/keyreference
layers              svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/layers
locales             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/locales
location            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/location
mail                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/mail
onlinehelp          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/onlinehelp
pagetemplate        svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/pagetemplate
preference          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/preference
preview             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/preview
principalannotation svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/principalannotation
publication         svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/publication
publisher           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/publisher
rdb                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/rdb
renderer            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/renderer
rotterdam           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/rotterdam
schema              svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/schema
security            svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/security
servicenames        svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/servicenames
session             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/session
site                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/site
size                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/size
skins               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/skins
sqlscript           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/sqlscript
testing             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/testing
tests               svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/tests
timezones           svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/timezones
traversing          svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/traversing
tree                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/tree
undo                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/undo
wfmc                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/wfmc
wsgi                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/wsgi
zapi                svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/zapi
zopeappgenerations  svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/zopeappgenerations
zptpage             svn://svn.zope.org/repos/main/Zope3/tags/3.3.2/src/zope/app/zptpage


Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/zope/app/EXTERNALS.txt
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/zope/app/EXTERNALS.txt	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/zope/app/EXTERNALS.txt	2007-07-18 14:28:59 UTC (rev 78110)
@@ -1,68 +1,68 @@
-annotation          svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/annotation
-apidoc              svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/apidoc
-applicationcontrol  svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/applicationcontrol
-appsetup            svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/appsetup
-authentication      svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/authentication
-basicskin           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/basicskin
-broken              svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/broken
-cache               svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/cache
-component           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/component
-container           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/container
-content             svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/content
-content_types       svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/content_types
-copypastemove       svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/copypastemove
-datetimeutils       svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/datetimeutils
-debug               svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/debug
-decorator           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/decorator
-dependable          svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/dependable
-dtmlpage            svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/dtmlpage
-dublincore          svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/dublincore
-error               svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/error
-event               svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/event
-exception           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/exception
-file                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/file
-filerepresentation  svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/filerepresentation
-folder              svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/folder
-form                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/form
-ftests              svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/ftests
-generations         svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/generations
-http                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/http
-i18n                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/i18n
-interface           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/interface
-intid               svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/intid
-introspector        svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/introspector
-keyreference        svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/keyreference
-layers              svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/layers
-locales             svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/locales
-location            svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/location
-mail                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/mail
-onlinehelp          svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/onlinehelp
-pagetemplate        svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/pagetemplate
-preference          svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/preference
-preview             svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/preview
-principalannotation svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/principalannotation
-publication         svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/publication
-publisher           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/publisher
-rdb                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/rdb
-renderer            svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/renderer
-rotterdam           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/rotterdam
-schema              svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/schema
-security            svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/security
-servicenames        svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/servicenames
-session             svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/session
-site                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/site
-size                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/size
-skins               svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/skins
-sqlscript           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/sqlscript
-testing             svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/testing
-tests               svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/tests
-timezones           svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/timezones
-traversing          svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/traversing
-tree                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/tree
-undo                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/undo
-wfmc                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/wfmc
-wsgi                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/wsgi
-zapi                svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/zapi
-zopeappgenerations  svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/zopeappgenerations
-zptpage             svn://svn.zope.org/repos/main/Zope3/tags/3.3.0/src/zope/app/zptpage
+annotation          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/annotation
+apidoc              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/apidoc
+applicationcontrol  svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/applicationcontrol
+appsetup            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/appsetup
+authentication      svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/authentication
+basicskin           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/basicskin
+broken              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/broken
+cache               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/cache
+component           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/component
+container           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/container
+content             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/content
+content_types       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/content_types
+copypastemove       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/copypastemove
+datetimeutils       svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/datetimeutils
+debug               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/debug
+decorator           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/decorator
+dependable          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/dependable
+dtmlpage            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/dtmlpage
+dublincore          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/dublincore
+error               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/error
+event               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/event
+exception           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/exception
+file                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/file
+filerepresentation  svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/filerepresentation
+folder              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/folder
+form                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/form
+ftests              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/ftests
+generations         svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/generations
+http                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/http
+i18n                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/i18n
+interface           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/interface
+intid               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/intid
+introspector        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/introspector
+keyreference        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/keyreference
+layers              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/layers
+locales             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/locales
+location            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/location
+mail                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/mail
+onlinehelp          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/onlinehelp
+pagetemplate        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/pagetemplate
+preference          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/preference
+preview             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/preview
+principalannotation svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/principalannotation
+publication         svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/publication
+publisher           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/publisher
+rdb                 svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/rdb
+renderer            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/renderer
+rotterdam           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/rotterdam
+schema              svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/schema
+security            svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/security
+servicenames        svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/servicenames
+session             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/session
+site                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/site
+size                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/size
+skins               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/skins
+sqlscript           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/sqlscript
+testing             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/testing
+tests               svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/tests
+timezones           svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/timezones
+traversing          svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/traversing
+tree                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/tree
+undo                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/undo
+wfmc                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/wfmc
+wsgi                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/wsgi
+zapi                svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/zapi
+zopeappgenerations  svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/zopeappgenerations
+zptpage             svn://svn.zope.org/repos/main/Zope3/tags/3.3.1/src/zope/app/zptpage
 

Modified: Zope/branches/2.10-with-ZODB3.8/skel/etc/zope.conf.in
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/skel/etc/zope.conf.in	2007-07-18 14:19:15 UTC (rev 78109)
+++ Zope/branches/2.10-with-ZODB3.8/skel/etc/zope.conf.in	2007-07-18 14:28:59 UTC (rev 78110)
@@ -443,7 +443,71 @@
 #
 #     http-header-max-length 16384
 
+# Directive: enable-ms-author-via
+#
+# Description:
+#     Set this directive to 'true' to enable the "MS-Author-Via" header
+#     in response to an OPTIONS WebDAV request. Early versions of
+#     Microsoft Web Folders and Microsoft Office require this header to
+#     be present to be able to connect to Zope via WebDAV.
+#
+#     This is disabled by default since it makes a lot of standards-compliant
+#     things unhappy AND it tricks Microsoft Office into trying to edit Office
+#     files stored in Zope via WebDAV even when the user isn't allowed to edit
+#     them and is only trying to download them.
+#
+#     Check this collector entry for more information:
+#     http://www.zope.org/Collectors/Zope/1441
+#
+#     Recent versions of Microsoft Web Folders, updated after January
+#     2005, do not require this header anymore, and instead require a
+#     "Public" header to be present in reply to the OPTIONS WebDAV
+#     request.
+#     (http://www.redmountainsw.com/wordpress/archives/webfolders-zope)
+# 
+#     To get a recent Microsoft Web Folders implementation, refer to
+#     Microsoft KB Article 907306.
+#     (Software Update for Web Folders: May 18, 2007).
+#
+# Default: off
+#
+# Example:
+#
+#    enable-ms-author-via on
 
+# Directive: enable-ms-public-header
+#
+# Description:
+#     Set this directive to 'on' to enable sending the "Public" header
+#     in response to an WebDAV OPTIONS request.
+#
+#     Though recent WebDAV drafts mention this header, the original
+#     WebDAV RFC did not mention it as part of the standard. Very few
+#     web servers out there include this header in their replies, most
+#     notably IIS and Netscape Enterprise 3.6.
+#
+#     Since many best practices documents out in the web mention
+#     turning off this header with the subject of "Mask Your Web Server
+#     For Enhanced Security", this setting is off by
+#     default. Presumably malicious people might take the presence of
+#     this header as indication of an IIS Web Server and try to attack
+#     your site, so be careful when turning it on.
+#
+#     Recent versions of Microsoft Web Folders, updated after January
+#     2005, *do* require this header to be present in reply to the
+#     OPTIONS WebDAV request.
+#     (http://www.redmountainsw.com/wordpress/archives/webfolders-zope)
+#
+#     To get a recent Microsoft Web Folders implementation, refer to
+#     Microsoft KB Article 907306.
+#     (Software Update for Web Folders: May 18, 2007).
+#
+# Default: off
+#
+# Example:
+#
+#    enable-ms-public-header on
+
 # Directive: automatically-quote-dtml-request-data
 #
 # Description:



More information about the Zope-Checkins mailing list