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

Andreas Zeidler az at zitc.de
Thu Oct 11 11:33:54 EDT 2007


Log message for revision 80851:
  merged r78106:80849 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/lib/python/App/dtml/manage_page_style.css.dtml
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Application.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Traversable.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testApplication.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testTraverse.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/PageTemplates/ZopePageTemplate.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/tests/testZopePageTemplate.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Products/Sessions/SessionDataManager.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Products/__init__.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/testBaseTestCase.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/testHTTPRequest.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/ZServer/FCGIServer.py
  U   Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/zopeschema.xml

-=-
Modified: Zope/branches/2.10-with-ZODB3.8/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/doc/CHANGES.txt	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/doc/CHANGES.txt	2007-10-11 15:33:54 UTC (rev 80851)
@@ -8,14 +8,41 @@
 
       - Backported feature from Zope 2.11 to support named temporary files.
 
-  Zope 2.10.4 (23.06.2007)
+  Zope 2.10.5 (unreleased)
 
+    Bugs fixed
+
+      - Launchpad #147201: treat container-class in zope.conf as a string,
+        making it possible to use types from extra products directories.
+
+      - Collector #2358: backported fix making 'Products' package a real
+        "namespace package" from the trunk.
+
+      - Collector #2287: form ':record' objects did not implement enough of
+        the mapping interface.
+
+      - Collector #2352: fix in OFS.Traversable
+
+      - Collector #2346: username logging in FCGI crashed the server
+
+      - ZopePageTemplate's pt_edit did not recognize content type arguments
+        which had a charset information included.
+
+      - Collector #2332: SessionDataManger: don't swallow ConflictErrors
+
+      - Collector #2339: ZPT: fixed unicode issue when using the 'structure'
+        directive
+
+  Zope 2.10.4 (2007/06/23)
+
     Other changes
 
       - updated to ZODB 3.7.1
 
       - updated to Zope 3.3.2
 
+      - updated to Five 1.5.5
+
     Bugs fixed
 
       - Collector #1306: Missing acquisition context on local roles screen.

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/App/dtml/manage_page_style.css.dtml
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/App/dtml/manage_page_style.css.dtml	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/App/dtml/manage_page_style.css.dtml	2007-10-11 15:33:54 UTC (rev 80851)
@@ -44,6 +44,10 @@
   color: #000099;
 }
 
+a img {
+  border: 0;
+}
+
 p {
   font-family: Verdana, Helvetica, sans-serif;
   font-size: 10pt;

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-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Application.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -634,9 +634,10 @@
                         folder_permissions, raise_exc=debug_mode)
 
     # Delayed install of packages-as-products
-    for module, init_func in Products._packages_to_initialize:
+    for module, init_func in getattr(Products, '_packages_to_initialize', []):
         install_package(app, module, init_func, raise_exc=debug_mode)
-    Products._packages_to_initialize = []
+    if hasattr(Products, '_packages_to_initialize'):
+        del Products._packages_to_initialize
 
     Products.meta_types=Products.meta_types+tuple(meta_types)
     InitializeClass(Folder.Folder)

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Traversable.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Traversable.py	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/Traversable.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -186,18 +186,18 @@
 
                 bobo_traverse = getattr(obj, '__bobo_traverse__', None)
                 try:
-                    if name and name[:1] in '@+' and name != '+':
+                    if name and name[:1] in '@+' and name != '+' and nsParse(name)[1]:
                         # Process URI segment parameters.
                         ns, nm = nsParse(name)
-                        if ns:
-                            try:
-                                next = namespaceLookup(
-                                    ns, nm, obj, self.REQUEST).__of__(obj)
-                                if restricted and not validate(
-                                    obj, obj, name, next):
-                                    raise Unauthorized(name)
-                            except TraversalError:
-                                raise AttributeError(name)
+                        try:
+                            next = namespaceLookup(
+                                ns, nm, obj, self.REQUEST).__of__(obj)
+                            if restricted and not validate(
+                                obj, obj, name, next):
+                                raise Unauthorized(name)
+                        except TraversalError:
+                            raise AttributeError(name)
+
                     elif bobo_traverse is not None:
                         next = bobo_traverse(REQUEST, name)
                         if restricted:

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testApplication.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testApplication.py	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testApplication.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -1,19 +1,113 @@
 import unittest
 
 
-class TestApplication(unittest.TestCase):
+class ApplicationTests(unittest.TestCase):
 
-    def test_z3interfaces(self):
+    def _getTargetClass(self):
+        from OFS.Application import Application
+        return Application
+
+    def _makeOne(self):
+        return self._getTargetClass()()
+
+    def test_class_provides_IApplication(self):
         from OFS.interfaces import IApplication
-        from OFS.Application import Application
         from zope.interface.verify import verifyClass
 
-        verifyClass(IApplication, Application)
+        verifyClass(IApplication, self._getTargetClass())
 
+    def test_instance_conforms_to_IApplication(self):
+        from OFS.interfaces import IApplication
+        from zope.interface.verify import verifyObject
 
+        verifyObject(IApplication, self._makeOne())
+
+    def test_instance_attributes(self):
+        app = self._makeOne()
+        self.failUnless(app.isTopLevelPrincipiaApplicationObject)
+        self.assertEqual(app.title, 'Zope')
+
+    def test_id_no_request(self):
+        app = self._makeOne()
+        self.assertEqual(app.id(), 'Zope')
+
+    def test_id_w_request_no_SCRIPT_NAME(self):
+        app = self._makeOne()
+        app.REQUEST = {}
+        self.assertEqual(app.id(), 'Zope')
+
+    def test_id_w_request_w_SCRIPT_NAME(self):
+        app = self._makeOne()
+        app.REQUEST = {'SCRIPT_NAME': '/Dummy'}
+        self.assertEqual(app.id(), 'Dummy')
+
+    def test_title_and_id_plus_title_or_id(self):
+        app = self._makeOne()
+        app.title = 'Other'
+        self.assertEqual(app.title_and_id(), 'Other')
+        self.assertEqual(app.title_or_id(), 'Other')
+
+    def test___bobo_traverse__attribute_hit(self):
+        app = self._makeOne()
+        app.NAME = 'attribute'
+        app._getOb = lambda x, y: x
+        request = {}
+        self.assertEqual(app.__bobo_traverse__(request, 'NAME'), 'attribute')
+
+    def test___bobo_traverse__attribute_miss_key_hit(self):
+        app = self._makeOne()
+        app._getOb = lambda x, y: x
+        request = {}
+        self.assertEqual(app.__bobo_traverse__(request, 'OTHER'), 'OTHER')
+
+    def test___bobo_traverse__attribute_key_miss_R_M_default_real_request(self):
+        from UserDict import UserDict
+        request = UserDict()
+
+        class _Response:
+            def notFoundError(self, msg):
+                1/0
+
+        request.RESPONSE = _Response()
+        app = self._makeOne()
+        app._getOb = _noWay
+
+        self.assertRaises(ZeroDivisionError,
+                          app.__bobo_traverse__, request, 'NONESUCH')
+
+    def test___bobo_traverse__attribute_key_miss_R_M_default_fake_request(self):
+        app = self._makeOne()
+
+        app._getOb = _noWay
+        request = {}
+        self.assertRaises(KeyError, app.__bobo_traverse__, request, 'NONESUCH')
+
+    def test___bobo_traverse__attribute_key_miss_R_M_is_GET(self):
+        app = self._makeOne()
+
+        app._getOb = _noWay
+        request = {'REQUEST_METHOD': 'GET'}
+        self.assertRaises(KeyError, app.__bobo_traverse__, request, 'NONESUCH')
+
+    def test___bobo_traverse__attribute_key_miss_R_M_not_GET_POST(self):
+        from Acquisition import aq_inner, aq_parent
+        from webdav.NullResource import NullResource
+
+        app = self._makeOne()
+        app._getOb = _noWay
+        request = {'REQUEST_METHOD': 'GOOFY'}
+
+        result = app.__bobo_traverse__(request, 'OTHER')
+
+        self.failUnless(isinstance(result, NullResource))
+        self.failUnless(aq_parent(aq_inner(result)) is app)
+
+def _noWay(self, key, default=None):
+    raise KeyError(key)
+
 def test_suite():
     return unittest.TestSuite((
-        unittest.makeSuite(TestApplication),
+        unittest.makeSuite(ApplicationTests),
         ))
 
 if __name__ == '__main__':

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testTraverse.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testTraverse.py	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/OFS/tests/testTraverse.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -169,6 +169,7 @@
             self.app = makerequest( self.root, stdout=responseOut )
             manage_addFolder( self.app, 'folder1' )
             folder1 = getattr( self.app, 'folder1' )
+            setattr(folder1, '+something', 'plus')
 
             folder1.all_meta_types = \
                                     ( { 'name'        : 'File'
@@ -378,8 +379,12 @@
         self.failUnless(
             aq_base(self.root.folder1.file.restrictedTraverse('../..')) is
             aq_base(self.root))
+    
+    def testTraverseToNameStartingWithPlus(self):
+        # Verify it's possible to traverse to a name such as +something
+        self.failUnless(
+            self.folder1.unrestrictedTraverse('+something') is 'plus')
 
-
 import os, sys
 if __name__ == '__main__':
     execfile(os.path.join(sys.path[0], 'framework.py'))


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.5

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


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-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/Expressions.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -217,12 +217,20 @@
             return value
         return bool(value)
 
+    def evaluateStructure(self, expr):
+        text = super(ZopeContext, self).evaluateStructure(expr)
+        return self._handleText(text, expr)
+
     def evaluateText(self, expr):
         """ customized version in order to get rid of unicode
             errors for all and ever
         """
         text = self.evaluate(expr)
+        return self._handleText(text, expr)
 
+
+    def _handleText(self, text, expr):
+
         if text is self.getDefault() or text is None:
             # XXX: should be unicode???
             return text

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/ZopePageTemplate.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/ZopePageTemplate.py	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/ZopePageTemplate.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -126,7 +126,7 @@
         encoding = None
         output_encoding = None
 
-        if content_type in ('text/xml',):
+        if content_type.startswith('text/xml'):
 
             if is_unicode:
                 encoding = None
@@ -134,9 +134,8 @@
             else:
                 encoding = encodingFromXMLPreamble(text)
                 output_encoding = 'utf-8'
-            
 
-        elif content_type in ('text/html',) :
+        elif content_type.startswith('text/html'):
 
             charset = charsetFromMetaEquiv(text)
 

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/tests/testZopePageTemplate.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/tests/testZopePageTemplate.py	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Products/PageTemplates/tests/testZopePageTemplate.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -121,7 +121,17 @@
         result = zpt.pt_render()
         self.assertEqual(result.startswith(unicode('<div>üöä</div>', 'iso-8859-15')), False)
 
+    def testStructureWithAccentedChars(self):
+        manage_addPageTemplate(self.app, 'test', 
+                               text='<div tal:content="structure python: %s" />' % "'üöä'",
+                               encoding='iso-8859-15')
+        zpt = self.app['test']
+        self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'iso-8859-15,utf-8')
+        self.app.REQUEST.set('data', unicode('üöä', 'iso-8859-15').encode('utf-8'))
+        result = zpt.pt_render()
+        self.assertEqual(result.startswith(unicode('<div>üöä</div>', 'iso-8859-15')), True)
 
+
 class ZopePageTemplateFileTests(ZopeTestCase):
 
     def testPT_RenderWithAscii(self):
@@ -165,6 +175,14 @@
         self.assertEqual(zpt.read(), s)
         self.assertEqual(isinstance(zpt.read(), unicode), True)
 
+    def testEditWithContentTypeCharset(self):
+        manage_addPageTemplate(self.app, 'test', xml_utf8, encoding='utf-8')
+        zpt = self.app['test']
+        xml_unicode = unicode(xml_utf8, 'utf-8').strip()
+        zpt.pt_edit(xml_unicode, 'text/xml')
+        zpt.pt_edit(xml_unicode, 'text/xml; charset=utf-8')
+        self.assertEqual(zpt.read(), xml_unicode)
+
     def _createZPT(self):
         manage_addPageTemplate(self.app, 'test', text=utf8_str, encoding='utf-8')
         zpt = self.app['test']

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Products/Sessions/SessionDataManager.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Products/Sessions/SessionDataManager.py	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Products/Sessions/SessionDataManager.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -15,6 +15,7 @@
 from logging import getLogger
 import Globals
 from OFS.SimpleItem import Item
+from ZODB.POSException import ConflictError
 from Acquisition import Implicit, Explicit, aq_base
 from Persistence import Persistent
 from AccessControl.Owned import Owned
@@ -219,6 +220,8 @@
                 LOG.debug('External data container at %s in use' % args)
                 self._v_wrote_dc_type = 1
             return self.unrestrictedTraverse(self.obpath)
+        except ConflictError:
+            raise
         except:
             raise SessionDataManagerErr, (
                 "External session data container '%s' not found." %

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-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Products/__init__.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -12,7 +12,9 @@
 ##############################################################################
 __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
+# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)

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-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/ZopeLite.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -174,7 +174,7 @@
     '''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:
+        for module, init_func in getattr(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

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/testBaseTestCase.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/testBaseTestCase.py	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Testing/ZopeTestCase/testBaseTestCase.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -405,6 +405,7 @@
             _sentinel1.append('__del__')
 
     def afterSetUp(self):
+        _sentinel1[:] = []
         self.anApp = base.app()
         self.anApp.REQUEST._hold(self.Held())
 
@@ -422,6 +423,7 @@
             _sentinel2.append('__del__')
 
     def afterSetUp(self):
+        _sentinel2[:] = []
         self.app.REQUEST._hold(self.Held())
 
     def testClearClosesRequest(self):
@@ -438,6 +440,7 @@
             _sentinel3.append('__del__')
 
     def afterSetUp(self):
+        _sentinel3[:] = []
         self.app.REQUEST._hold(self.Held())
 
     def testClearClosesRequest(self):

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-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/HTTPRequest.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -1533,7 +1533,7 @@
     _guarded_writes = 1
 
     def __getattr__(self, key, default=None):
-        if key in ('get', 'keys', 'items', 'values', 'copy', 'has_key'):
+        if key in ('get', 'keys', 'items', 'values', 'copy', 'has_key', '__contains__', '__iter__', '__len__'):
             return getattr(self.__dict__, key)
         raise AttributeError, key
 

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-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/ZPublisher/tests/testHTTPRequest.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -86,7 +86,29 @@
         d = eval( r )
         self.assertEqual( d, record.__dict__ )
 
+    def test_contains(self):
+        from ZPublisher.HTTPRequest import record
+        record = record()
+        record.a = 1
+        self.assertTrue('a' in record)
 
+    def test_iter(self):
+        from ZPublisher.HTTPRequest import record
+        record = record()
+        record.a = 1
+        record.b = 2
+        record.c = 3
+        for k in record:
+            self.assertTrue(k in ('a','b','c'))
+
+    def test_len(self):
+        from ZPublisher.HTTPRequest import record
+        record = record()
+        record.a = 1
+        record.b = 2
+        record.c = 3
+        self.assertEqual(len(record), 3)
+
 class ProcessInputsTests(unittest.TestCase):
     def _getHTTPRequest(self, env):
         from ZPublisher.HTTPRequest import HTTPRequest

Modified: Zope/branches/2.10-with-ZODB3.8/lib/python/ZServer/FCGIServer.py
===================================================================
--- Zope/branches/2.10-with-ZODB3.8/lib/python/ZServer/FCGIServer.py	2007-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/ZServer/FCGIServer.py	2007-10-11 15:33:54 UTC (rev 80851)
@@ -456,18 +456,15 @@
             method=self.env['REQUEST_METHOD']
         else:
             method="GET"
+        user_name = '-'
         if self.env.has_key('HTTP_AUTHORIZATION'):
             http_authorization=self.env['HTTP_AUTHORIZATION']
             if string.lower(http_authorization[:6]) == 'basic ':
                 try: decoded=base64.decodestring(http_authorization[6:])
                 except base64.binascii.Error: decoded=''
                 t = string.split(decoded, ':', 1)
-                if len(t) < 2:
-                    user_name = '-'
-                else:
+                if len(t) >= 2:
                     user_name = t[0]
-        else:
-            user_name='-'
         if self.addr:
             self.server.logger.log (
                 self.addr[0],

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-10-11 15:12:04 UTC (rev 80850)
+++ Zope/branches/2.10-with-ZODB3.8/lib/python/Zope2/Startup/zopeschema.xml	2007-10-11 15:33:54 UTC (rev 80851)
@@ -242,7 +242,7 @@
       </description>
     </key>
 
-    <key name="container-class" datatype=".python_dotted_path">
+    <key name="container-class" datatype="string">
       <description>
        Change the contiainer class a (mounted) database uses on a
        per-database basis to support a different container than a plain



More information about the Zope-Checkins mailing list