Merge zope33-port branch: Use most recent Zope 3 trunk (after jim-adapter branch merge)

and a corresponding Five trunk
parent 003f090f
......@@ -26,7 +26,7 @@ from Globals import package_home
from Common import rfc1123_date
from DateTime import DateTime
from zope.app.contenttypes import guess_content_type
from zope.contenttype import guess_content_type
class ImageFile(Acquisition.Explicit):
"""Image objects stored in external files."""
......
......@@ -37,7 +37,7 @@ from zExceptions import Unauthorized, BadRequest
from ZODB.POSException import ConflictError
from zope.interface import implements
from zope.event import notify
from zope.app.event.objectevent import ObjectCopiedEvent
from zope.lifecycleevent import ObjectCopiedEvent
from zope.app.container.contained import ObjectMovedEvent
from zope.app.container.contained import notifyContainerModified
from OFS.event import ObjectWillBeMovedEvent
......
......@@ -17,7 +17,7 @@ $Id$
from Globals import InitializeClass
from ZPublisher.Converters import type_converters
from Globals import HTML, DTMLFile, MessageDialog
from zope.app.contenttypes import guess_content_type
from zope.contenttype import guess_content_type
from DTMLMethod import DTMLMethod, decapitate
from PropertyManager import PropertyManager
from webdav.common import rfc1123_date
......
......@@ -18,7 +18,7 @@ import History
from Globals import HTML, DTMLFile, MessageDialog
from Globals import InitializeClass
from SimpleItem import Item_w__name__, pretty_tb
from zope.app.contenttypes import guess_content_type
from zope.contenttype import guess_content_type
from PropertyManager import PropertyManager
from AccessControl import ClassSecurityInfo
from AccessControl.Role import RoleManager
......
......@@ -15,7 +15,7 @@
$Id$
"""
import struct
from zope.app.contenttypes import guess_content_type
from zope.contenttype import guess_content_type
from Globals import DTMLFile
from Globals import InitializeClass
from PropertyManager import PropertyManager
......
......@@ -46,6 +46,7 @@ from zExceptions import BadRequest
from ZODB.POSException import ConflictError
from zope.interface import implements
from zope.component.interfaces import ComponentLookupError
import CopySupport
from interfaces import IObjectManager
......@@ -166,6 +167,21 @@ class ObjectManager(
isPrincipiaFolderish=1
# IPossibleSite API
_components = None
security.declarePublic('getSiteManager')
def getSiteManager(self):
if self._components is None:
raise ComponentLookupError('No component registry defined.')
return self._components
security.declareProtected('Manage Site', 'setSiteManager')
def setSiteManager(self, components):
self._components = components
def __class_init__(self):
try: mt=list(self.meta_types)
except: mt=[]
......
......@@ -14,11 +14,10 @@
$Id$
"""
import warnings
warnings.warn('Using OFS.content_types is deprecated (will be removed in Zope '
'2.11). Instead use zope.app.contenttypes.',
'2.11). Instead use zope.contenttype.',
DeprecationWarning,
stacklevel=2)
from zope.app.contenttypes import text_type, guess_content_type, add_files
from zope.contenttype import text_type, guess_content_type, add_files
......@@ -18,7 +18,7 @@ $Id$
"""
from zope.interface import implements
from zope.app.event.objectevent import ObjectEvent
from zope.component.interfaces import ObjectEvent
import OFS.interfaces
......
......@@ -27,7 +27,8 @@ from persistent.interfaces import IPersistent
from webdav.interfaces import IDAVCollection
from webdav.interfaces import IDAVResource
from zope.app.traversing.interfaces import IContainmentRoot
from zope.traversing.interfaces import IContainmentRoot
from zope.app.component.interfaces import IPossibleSite
class IOrderedContainer(Interface):
......@@ -476,13 +477,12 @@ class ICopyContainer(Interface):
# not synced with ZopeBook API Reference;
# based on OFS.ObjectManager.ObjectManager
class IObjectManager(IZopeObject, ICopyContainer, INavigation, IManageable,
IAcquirer, IPersistent, IDAVCollection, ITraversable):
IAcquirer, IPersistent, IDAVCollection, ITraversable,
IPossibleSite):
"""Generic object manager
This interface provides core behavior for collections of heterogeneous
objects.
"""
objects."""
meta_types = Tuple(
title=u"Meta types",
......@@ -903,7 +903,7 @@ class IApplication(IFolder, IContainmentRoot):
##################################################
# Event interfaces
from zope.app.event.interfaces import IObjectEvent
from zope.component.interfaces import IObjectEvent
class IObjectWillBeMovedEvent(IObjectEvent):
"""An object will be moved."""
......
......@@ -20,17 +20,17 @@ $Id$
import warnings
from logging import getLogger
import OFS.interfaces
from Acquisition import aq_base
from App.config import getConfiguration
from AccessControl import getSecurityManager
from ZODB.POSException import ConflictError
import OFS.interfaces
from zope.interface import implements
from zope.component import adapts
import zope.component
import zope.interface
import zope.location.interfaces
from zope.app.container.contained import dispatchToSublocations
from zope.app.location.interfaces import ISublocations
from zope.app.container.interfaces import IObjectMovedEvent
deprecatedManageAddDeleteClasses = []
......@@ -78,8 +78,8 @@ def maybeWarnDeprecated(ob, method_name):
class ObjectManagerSublocations(object):
"""Get the sublocations for an ObjectManager.
"""
adapts(OFS.interfaces.IObjectManager)
implements(ISublocations)
zope.component.adapts(OFS.interfaces.IObjectManager)
zope.interface.implements(zope.location.interfaces.ISublocations)
def __init__(self, container):
self.container = container
......@@ -98,6 +98,8 @@ class ObjectManagerSublocations(object):
# could have a simple subscriber for IObjectManager that directly calls
# dispatchToSublocations.
@zope.component.adapter(OFS.interfaces.IItem,
OFS.interfaces.IObjectWillBeMovedEvent)
def dispatchObjectWillBeMovedEvent(ob, event):
"""Multi-subscriber for IItem + IObjectWillBeMovedEvent.
"""
......@@ -107,6 +109,7 @@ def dispatchObjectWillBeMovedEvent(ob, event):
# Next, do the manage_beforeDelete dance
callManageBeforeDelete(ob, event.object, event.oldParent)
@zope.component.adapter(OFS.interfaces.IItem, IObjectMovedEvent)
def dispatchObjectMovedEvent(ob, event):
"""Multi-subscriber for IItem + IObjectMovedEvent.
"""
......@@ -116,6 +119,8 @@ def dispatchObjectMovedEvent(ob, event):
if OFS.interfaces.IObjectManager.providedBy(ob):
dispatchToSublocations(ob, event)
@zope.component.adapter(OFS.interfaces.IItem,
OFS.interfaces.IObjectClonedEvent)
def dispatchObjectClonedEvent(ob, event):
"""Multi-subscriber for IItem + IObjectClonedEvent.
"""
......
......@@ -20,7 +20,7 @@ import os
import Acquisition
from Globals import ImageFile, package_home, InitializeClass
from OFS.SimpleItem import SimpleItem
from zope.app.contenttypes import guess_content_type
from zope.contenttype import guess_content_type
from DateTime.DateTime import DateTime
from Shared.DC.Scripts.Script import Script
from Shared.DC.Scripts.Signature import FuncCode
......
......@@ -24,11 +24,7 @@ from StringIO import StringIO
from DocumentTemplate.DT_Util import ustr
from ZODB.POSException import ConflictError
# BBB 2005/10/10 -- MessageIDs are to be removed for Zope 3.3
import zope.deprecation
zope.deprecation.__show__.off()
from zope.i18nmessageid import Message, MessageID
zope.deprecation.__show__.on()
from zope.i18nmessageid import Message
from TALDefs import attrEscape, TAL_VERSION, METALError
from TALDefs import isCurrentVersion
......@@ -36,8 +32,7 @@ from TALDefs import getProgramVersion, getProgramMode
from TALGenerator import TALGenerator
from TranslationContext import TranslationContext
# This will become (MessageID, Message) when we use Zope 3.1 as a base:
I18nMessageTypes = Message, MessageID
I18nMessageTypes = (Message,)
# TODO: In Python 2.4 we can use frozenset() instead of dict.fromkeys()
BOOLEAN_HTML_ATTRS = dict.fromkeys([
......
......@@ -62,7 +62,7 @@ def makerequest(app, stdout=stdout, environ=None):
# set Zope3-style default skin so that the request is usable for
# Zope3-style view look-ups.
from zope.app.publication.browser import setDefaultSkin
from zope.publisher.browser import setDefaultSkin
setDefaultSkin(req)
requestcontainer = RequestContainer(REQUEST = req)
......
......@@ -25,7 +25,7 @@ from zExceptions import BadRequest
import marshal
from cgi import escape
from zope.app.contenttypes import guess_content_type
from zope.contenttype import guess_content_type
_marker=[]
class ZClassMethodsSheet(
......
......@@ -13,7 +13,7 @@
__version__='$Revision: 1.96 $'[11:-2]
import re, sys, os, time, random, codecs
import re, sys, os, time, random, codecs, inspect
from types import StringType, UnicodeType
from BaseRequest import BaseRequest
from HTTPResponse import HTTPResponse
......@@ -25,6 +25,8 @@ from TaintedString import TaintedString
from maybe_lock import allocate_lock
xmlrpc=None # Placeholder for module that we'll import if we have to.
from zope.publisher.base import DebugFlags
# This may get overwritten during configuration
default_encoding = 'iso-8859-15'
......@@ -262,6 +264,7 @@ class HTTPRequest(BaseRequest):
self.steps=[]
self._steps=[]
self._lazies={}
self._debug = DebugFlags()
if environ.has_key('REMOTE_ADDR'):
......@@ -1213,7 +1216,18 @@ class HTTPRequest(BaseRequest):
raise KeyError, key
return v
# Using the getattr protocol to retrieve form values and similar
# is discouraged and is likely to be deprecated in the future.
# request.get(key) or request[key] should be used instead
def __getattr__(self, key, default=_marker, returnTaints=0):
# ugly hack to make request.debug work for Zope 3 code (the
# ZPT engine, to be exact) while retaining request.debug
# functionality for all other code
if key == 'debug':
lastframe = inspect.currentframe().f_back
if lastframe.f_globals['__name__'].startswith('zope.'):
return self._debug
v = self.get(key, default, returnTaints=returnTaints)
if v is _marker:
raise AttributeError, key
......
......@@ -21,7 +21,7 @@ from Request import Request
from maybe_lock import allocate_lock
from mapply import mapply
from zExceptions import Redirect
from zope.app.publication.browser import setDefaultSkin
from zope.publisher.browser import setDefaultSkin
class Retry(Exception):
"""Raise this to retry a request
......
......@@ -192,7 +192,7 @@ def publish_module(module_name,
# make sure that the request we hand over has the
# default layer/skin set on it; subsequent code that
# wants to look up views will likely depend on it
from zope.app.publication.browser import setDefaultSkin
from zope.publisher.browser import setDefaultSkin
setDefaultSkin(request)
for k, v in extra.items(): request[k]=v
......
......@@ -701,6 +701,45 @@ class RequestTests( unittest.TestCase ):
f.seek(0)
self.assertEqual(f.xreadlines(),f)
def testDebug(self):
TEST_ENVIRON = {
'REQUEST_METHOD': 'GET',
'SERVER_NAME': 'localhost',
'SERVER_PORT': '80',
}
from StringIO import StringIO
from ZPublisher.HTTPRequest import HTTPRequest
s = StringIO('')
# accessing request.debug from non-Zope3 code will raise an
# AttributeError
env = TEST_ENVIRON.copy()
request = HTTPRequest(s, env, None)
request.processInputs()
self.assertRaises(AttributeError, getattr, request, 'debug')
# or it will actually yield a 'debug' form variable if it
# exists
env = TEST_ENVIRON.copy()
env['QUERY_STRING'] = 'debug=1'
request = HTTPRequest(s, env, None)
request.processInputs()
self.assertEqual(request.debug, '1')
# if we access request.debug from a Zope 3 package, however,
# we will see the DebugFlags instance
def getDebug(request):
return request.debug
# make a forged copy of getDebug that looks as if its module
# was a Zope 3 package
z3globals = globals().copy()
z3globals['__name__'] = 'zope.apackage'
import new
getDebugFromZope3 = new.function(getDebug.func_code, z3globals)
from zope.publisher.base import DebugFlags
self.assertEqual(getDebug(request), '1')
self.assert_(isinstance(getDebugFromZope3(request), DebugFlags))
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(AuthCredentialsTestsa, 'test'))
......
......@@ -202,7 +202,7 @@ def root_handler(config):
# Augment the set of MIME types:
if config.mime_types:
from zope.app.contenttypes import add_files
from zope.contenttype import add_files
add_files(config.mime_types)
# if no servers are defined, create default http server and ftp server
......
......@@ -39,7 +39,7 @@ from interfaces import IWriteLock
from Resource import Resource
from WriteLockInterface import WriteLockInterface
from zope.app.contenttypes import guess_content_type
from zope.contenttype import guess_content_type
class NullResource(Persistent, Acquisition.Implicit, Resource):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment