[Zope-Checkins] SVN: Zope/trunk/ Removed `OFS.ZDOM`.
Hanno Schlichting
hannosch at hannosch.eu
Sun Jul 3 11:58:43 EDT 2011
Log message for revision 122089:
Removed `OFS.ZDOM`.
Changed:
U Zope/trunk/doc/CHANGES.rst
U Zope/trunk/src/OFS/Application.py
U Zope/trunk/src/OFS/DTMLMethod.py
U Zope/trunk/src/OFS/PropertyManager.py
U Zope/trunk/src/OFS/SimpleItem.py
D Zope/trunk/src/OFS/ZDOM.py
-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst 2011-07-03 15:52:37 UTC (rev 122088)
+++ Zope/trunk/doc/CHANGES.rst 2011-07-03 15:58:42 UTC (rev 122089)
@@ -44,6 +44,8 @@
Restructuring
+++++++++++++
+- Removed `OFS.ZDOM`.
+
- Removed the last remaining code to support `SOFTWARE_HOME` and `ZOPE_HOME`.
- Removed ZMI controls for restarting the process, these no longer apply when
Modified: Zope/trunk/src/OFS/Application.py
===================================================================
--- Zope/trunk/src/OFS/Application.py 2011-07-03 15:52:37 UTC (rev 122088)
+++ Zope/trunk/src/OFS/Application.py 2011-07-03 15:58:42 UTC (rev 122089)
@@ -36,7 +36,6 @@
import Folder
import misc_
-import ZDOM
from FindSupport import FindSupport
from interfaces import IApplication
from misc_ import Misc_
@@ -47,7 +46,6 @@
class Application(ApplicationDefaultPermissions,
- ZDOM.Root,
Folder.Folder,
FindSupport,
):
Modified: Zope/trunk/src/OFS/DTMLMethod.py
===================================================================
--- Zope/trunk/src/OFS/DTMLMethod.py 2011-07-03 15:52:37 UTC (rev 122088)
+++ Zope/trunk/src/OFS/DTMLMethod.py 2011-07-03 15:58:42 UTC (rev 122089)
@@ -34,7 +34,6 @@
from OFS.History import html_diff
from OFS.role import RoleManager
from OFS.SimpleItem import Item_w__name__
-from OFS.ZDOM import ElementWithTitle
from webdav.Lockable import ResourceLockedError
from zExceptions import Forbidden
from zExceptions.TracebackSupplement import PathTracebackSupplement
@@ -48,7 +47,6 @@
HTML,
Implicit,
RoleManager,
- ElementWithTitle,
Item_w__name__,
Historical,
Cacheable,
Modified: Zope/trunk/src/OFS/PropertyManager.py
===================================================================
--- Zope/trunk/src/OFS/PropertyManager.py 2011-07-03 15:52:37 UTC (rev 122088)
+++ Zope/trunk/src/OFS/PropertyManager.py 2011-07-03 15:58:42 UTC (rev 122089)
@@ -23,7 +23,6 @@
from ExtensionClass import Base
from App.special_dtml import DTMLFile
from App.Dialogs import MessageDialog
-from Persistence import Persistent
from zExceptions import BadRequest
from zope.interface import implements
from ZPublisher.Converters import type_converters
@@ -31,9 +30,8 @@
from OFS.interfaces import IPropertyManager
from OFS.PropertySheets import DefaultPropertySheets
from OFS.PropertySheets import vps
-from OFS.ZDOM import ElementWithAttributes
-class PropertyManager(Base, ElementWithAttributes):
+class PropertyManager(Base):
"""
The PropertyManager mixin class provides an object with
Modified: Zope/trunk/src/OFS/SimpleItem.py
===================================================================
--- Zope/trunk/src/OFS/SimpleItem.py 2011-07-03 15:52:37 UTC (rev 122088)
+++ Zope/trunk/src/OFS/SimpleItem.py 2011-07-03 15:58:42 UTC (rev 122089)
@@ -57,7 +57,6 @@
from OFS.CopySupport import CopySource
from OFS.role import RoleManager
from OFS.Traversable import Traversable
-from OFS.ZDOM import Element
import logging
logger = logging.getLogger()
@@ -67,7 +66,6 @@
CopySource,
Tabs,
Traversable,
- Element,
Owned,
UndoSupport,
):
Deleted: Zope/trunk/src/OFS/ZDOM.py
===================================================================
--- Zope/trunk/src/OFS/ZDOM.py 2011-07-03 15:52:37 UTC (rev 122088)
+++ Zope/trunk/src/OFS/ZDOM.py 2011-07-03 15:58:42 UTC (rev 122089)
@@ -1,568 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2002 Zope Foundation and Contributors.
-#
-# 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
-#
-##############################################################################
-"""
-DOM implementation in ZOPE : Read-Only methods
-
-All standard Zope objects support DOM to a limited extent.
-"""
-from AccessControl.class_init import InitializeClass
-from AccessControl.SecurityInfo import ClassSecurityInfo
-from AccessControl.Permissions import access_contents_information
-from Acquisition import Explicit
-from Acquisition import Implicit
-from Acquisition import aq_base
-from Acquisition import aq_parent
-
-
-# Node type codes
-# ---------------
-
-ELEMENT_NODE = 1
-ATTRIBUTE_NODE = 2
-TEXT_NODE = 3
-CDATA_SECTION_NODE = 4
-ENTITY_REFERENCE_NODE = 5
-ENTITY_NODE = 6
-PROCESSING_INSTRUCTION_NODE = 7
-COMMENT_NODE = 8
-DOCUMENT_NODE = 9
-DOCUMENT_TYPE_NODE = 10
-DOCUMENT_FRAGMENT_NODE = 11
-NOTATION_NODE = 12
-
-# Exception codes
-# ---------------
-
-INDEX_SIZE_ERR = 1
-DOMSTRING_SIZE_ERR = 2
-HIERARCHY_REQUEST_ERR = 3
-WRONG_DOCUMENT_ERR = 4
-INVALID_CHARACTER_ERR = 5
-NO_DATA_ALLOWED_ERR = 6
-NO_MODIFICATION_ALLOWED_ERR = 7
-NOT_FOUND_ERR = 8
-NOT_SUPPORTED_ERR = 9
-INUSE_ATTRIBUTE_ERR = 10
-
-# Exceptions
-# ----------
-
-class DOMException(Exception):
- pass
-class IndexSizeException(DOMException):
- code = INDEX_SIZE_ERR
-class DOMStringSizeException(DOMException):
- code = DOMSTRING_SIZE_ERR
-class HierarchyRequestException(DOMException):
- code = HIERARCHY_REQUEST_ERR
-class WrongDocumentException(DOMException):
- code = WRONG_DOCUMENT_ERR
-class InvalidCharacterException(DOMException):
- code = INVALID_CHARACTER_ERR
-class NoDataAllowedException(DOMException):
- code = NO_DATA_ALLOWED_ERR
-class NoModificationAllowedException(DOMException):
- code = NO_MODIFICATION_ALLOWED_ERR
-class NotFoundException(DOMException):
- code = NOT_FOUND_ERR
-class NotSupportedException(DOMException):
- code = NOT_SUPPORTED_ERR
-class InUseAttributeException(DOMException):
- code = INUSE_ATTRIBUTE_ERR
-
-# Node classes
-# ------------
-
-class Node:
- """
- Node Interface
- """
-
- security = ClassSecurityInfo()
-
- # DOM attributes
- # --------------
-
- security.declareProtected(access_contents_information, 'getNodeName')
- def getNodeName(self):
- """The name of this node, depending on its type"""
- return None
-
- security.declareProtected(access_contents_information, 'getNodeValue')
- def getNodeValue(self):
- """The value of this node, depending on its type"""
- return None
-
- security.declareProtected(access_contents_information, 'getParentNode')
- def getParentNode(self):
- """The parent of this node. All nodes except Document
- DocumentFragment and Attr may have a parent"""
- return None
-
- security.declareProtected(access_contents_information, 'getChildNodes')
- def getChildNodes(self):
- """Returns a NodeList that contains all children of this node.
- If there are no children, this is a empty NodeList"""
- return NodeList()
-
- security.declareProtected(access_contents_information, 'getFirstChild')
- def getFirstChild(self):
- """The first child of this node. If there is no such node
- this returns None."""
- return None
-
- security.declareProtected(access_contents_information, 'getLastChild')
- def getLastChild(self):
- """The last child of this node. If there is no such node
- this returns None."""
- return None
-
- security.declareProtected(access_contents_information,
- 'getPreviousSibling')
- def getPreviousSibling(self):
- """The node immediately preceding this node. If
- there is no such node, this returns None."""
- return None
-
- security.declareProtected(access_contents_information, 'getNextSibling')
- def getNextSibling(self):
- """The node immediately preceding this node. If
- there is no such node, this returns None."""
- return None
-
- security.declareProtected(access_contents_information, 'getAttributes')
- def getAttributes(self):
- """Returns a NamedNodeMap containing the attributes
- of this node (if it is an element) or None otherwise."""
- return None
-
- security.declareProtected(access_contents_information, 'getOwnerDocument')
- def getOwnerDocument(self):
- """The Document object associated with this node.
- When this is a document this is None"""
- node = self
- if hasattr(node, 'aq_parent'):
- node = aq_parent(self)
- return node.getOwnerDocument()
- return node
-
- # DOM Methods
- # -----------
-
- security.declareProtected(access_contents_information, 'hasChildNodes')
- def hasChildNodes(self):
- """Returns true if the node has any children, false
- if it doesn't. """
- return len(self.objectIds())
-
-InitializeClass(Node)
-
-
-class Document(Explicit, Node):
- """
- Document Interface
- """
-
- security = ClassSecurityInfo()
-
- # Document Methods
- # ----------------
-
- security.declareProtected(access_contents_information, 'getImplementation')
- def getImplementation(self):
- """
- The DOMImplementation object that handles this document.
- """
- return DOMImplementation()
-
- security.declareProtected(access_contents_information, 'getDoctype')
- def getDoctype(self):
- """
- The Document Type Declaration associated with this document.
- For HTML documents as well as XML documents without
- a document type declaration this returns null.
- """
- return None
-
- security.declareProtected(access_contents_information,
- 'getDocumentElement')
- def getDocumentElement(self):
- """
- This is a convenience attribute that allows direct access to
- the child node that is the root element of the document.
- """
- return aq_parent(self)
-
- # Node Methods
- # ------------
-
- def getNodeName(self):
- """The name of this node, depending on its type"""
- return '#document'
-
- def getNodeType(self):
- """A code representing the type of the node."""
- return DOCUMENT_NODE
-
- def getOwnerDocument(self):
- """The Document object associated with this node.
- When this is a document this is None"""
- return self
-
- def getChildNodes(self):
- """Returns a NodeList that contains all children of this node.
- If there are no children, this is a empty NodeList"""
- return NodeList([aq_parent(self)])
-
- def getFirstChild(self):
- """The first child of this node. If there is no such node
- this returns None."""
- return aq_parent(self)
-
- def getLastChild(self):
- """The last child of this node. If there is no such node
- this returns None."""
- return aq_parent(self)
-
- def hasChildNodes(self):
- """Returns true if the node has any children, false
- if it doesn't. """
- return 1
-
-InitializeClass(Document)
-
-
-class DOMImplementation:
- """
- DOMImplementation Interface
- """
-
- security = ClassSecurityInfo()
-
- security.declareProtected(access_contents_information, 'hasFeature')
- def hasFeature(self, feature, version = None):
- """
- hasFeature - Test if the DOM implementation implements a specific
- feature. Parameters: feature The package name of the feature to
- test. In Level 1, the legal values are "HTML" and "XML"
- (case-insensitive). version This is the version number of the
- package name to test. In Level 1, this is the string "1.0". If the
- version is not specified, supporting any version of the feature
- will cause the method to return true. Return Value true if the
- feature is implemented in the specified version, false otherwise.
- """
- feature=feature.lower()
- if feature == 'html': return 0
- if feature == 'xml':
- if version is None: return 1
- if version == '1.0': return 1
- return 0
-
-InitializeClass(DOMImplementation)
-
-
-class Element(Node):
- """
- Element interface
- """
-
- security = ClassSecurityInfo()
-
- # Element Attributes
- # ------------------
-
- security.declareProtected(access_contents_information, 'getTagName')
- def getTagName(self):
- """The name of the element"""
- return self.__class__.__name__
-
- # Node Attributes
- # ---------------
-
- def getNodeName(self):
- """The name of this node, depending on its type"""
- return self.getTagName()
-
- def getNodeType(self):
- """A code representing the type of the node."""
- return ELEMENT_NODE
-
- def getParentNode(self):
- """The parent of this node. All nodes except Document
- DocumentFragment and Attr may have a parent"""
- return getattr(self, 'aq_parent', None)
-
- def getChildNodes(self):
- """Returns a NodeList that contains all children of this node.
- If there are no children, this is a empty NodeList"""
- return NodeList(self.objectValues())
-
- def getFirstChild(self):
- """The first child of this node. If there is no such node
- this returns None"""
- children = self.getChildNodes()
- if children:
- return children._data[0]
- return None
-
- def getLastChild(self):
- """The last child of this node. If there is no such node
- this returns None."""
- children = self.getChildNodes()
- if children:
- return children._data[-1]
- return None
-
- def getPreviousSibling(self):
- """The node immediately preceding this node. If
- there is no such node, this returns None."""
- if hasattr(self, 'aq_parent'):
- parent = aq_parent(self)
- ids=list(parent.objectIds())
- id=self.id
- if type(id) is not type(''): id=id()
- try: index=ids.index(id)
- except: return None
- if index < 1: return None
- return parent.objectValues()[index-1]
- return None
-
- def getNextSibling(self):
- """The node immediately preceding this node. If
- there is no such node, this returns None."""
- if hasattr(self, 'aq_parent'):
- parent = aq_parent(self)
- ids=list(parent.objectIds())
- id=self.id
- if type(id) is not type(''): id=id()
- try: index=ids.index(id)
- except: return None
- if index >= len(ids)-1: return None
- return parent.objectValues()[index+1]
- return None
-
- # Element Methods
- # ---------------
-
- security.declareProtected(access_contents_information, 'getAttribute')
- def getAttribute(self, name):
- """Retrieves an attribute value by name."""
- return None
-
- security.declareProtected(access_contents_information, 'getAttributeNode')
- def getAttributeNode(self, name):
- """ Retrieves an Attr node by name or None if
- there is no such attribute. """
- return None
-
- security.declareProtected(access_contents_information,
- 'getElementsByTagName')
- def getElementsByTagName(self, tagname):
- """ Returns a NodeList of all the Elements with a given tag
- name in the order in which they would be encountered in a
- preorder traversal of the Document tree. Parameter: tagname
- The name of the tag to match (* = all tags). Return Value: A new
- NodeList object containing all the matched Elements.
- """
- nodeList = []
- for child in self.objectValues():
- if (child.getNodeType()==ELEMENT_NODE and \
- child.getTagName()==tagname or tagname== '*'):
- nodeList.append(child)
- if hasattr(child, 'getElementsByTagName'):
- n1 = child.getElementsByTagName(tagname)
- nodeList = nodeList + n1._data
- return NodeList(nodeList)
-
-InitializeClass(Element)
-
-
-class ElementWithAttributes(Element):
- """
- Elements that allow DOM access to Zope properties of type 'string'.
-
- Note: This sub-class should only be used by PropertyManagers
- """
-
- def getAttributes(self):
- """Returns a NamedNodeMap containing the attributes
- of this node (if it is an element) or None otherwise."""
- attribs={}
- for p in self._properties:
- if p['type'] == 'string':
- name=p['id']
- attrib=Attr(name, self.getProperty(name,'')).__of__(self)
- attribs[name]=attrib
- return NamedNodeMap(attribs)
-
- def getAttribute(self, name):
- """Retrieves an attribute value by name."""
- if self.getPropertyType(name) == 'string':
- return self.getProperty(name,'')
-
- def getAttributeNode(self, name):
- """Retrieves an Attr node by name or None if
- there is no such attribute. """
- if self.getPropertyType(name) == 'string':
- return Attr(name, self.getProperty(name,'')).__of__(self)
- return None
-
-
-class ElementWithTitle(Element):
- """
- Elements that allow DOM access to Zope 'title' property.
-
- Note: Don't use this sub-class for PropertyManagers
- """
-
- def getAttributes(self):
- """Returns a NamedNodeMap containing the attributes
- of this node (if it is an element) or None otherwise."""
- title = self.getAttributeNode('title')
- if title is not None:
- return NamedNodeMap({'title':title})
- return NamedNodeMap()
-
- def getAttribute(self, name):
- """Retrieves an attribute value by name."""
- if name=='title' and hasattr(aq_base(self), 'title'):
- return self.title
- return ''
-
- def getAttributeNode(self, name):
- """Retrieves an Attr node by name or None if
- there is no such attribute. """
- value=self.getAttribute(name)
- if value:
- return Attr(name, value).__of__(self)
- return None
-
-
-class Root(ElementWithAttributes):
- """
- The top-level Zope object.
- """
-
- def getOwnerDocument(self):
- """
- """
- return Document().__of__(self)
-
-
-class NodeList:
- """NodeList interface - Provides the abstraction of an ordered
- collection of nodes.
-
- Python extensions: can use sequence-style 'len', 'getitem', and
- 'for..in' constructs.
- """
-
- # The security machinery is not willing to treat this like a
- # list just because we act like one. We need to assert that
- # its ok to allow access to items in the nodelist.
- __allow_access_to_unprotected_subobjects__=1
-
- def __init__(self,list=None):
- self._data = list or []
-
- def __getitem__(self, index):
- return self._data[index]
-
- def item(self, index):
- """Returns the index-th item in the collection"""
- try: return self._data[index]
- except IndexError: return None
-
- def getLength(self):
- """The length of the NodeList"""
- return len(self._data)
-
- __len__=getLength
-
-
-class NamedNodeMap:
- """
- NamedNodeMap interface - Is used to represent collections
- of nodes that can be accessed by name. NamedNodeMaps are not
- maintained in any particular order.
-
- Python extensions: can use sequence-style 'len', 'getitem', and
- 'for..in' constructs, and mapping-style 'getitem'.
- """
-
- # Tell the security machinery to allow access to items.
- __allow_access_to_unprotected_subobjects__=1
-
- def __init__(self, data=None):
- if data is None : data = {}
- self._data = data
-
- def item(self, index):
- """Returns the index-th item in the map"""
- try: return self._data.values()[index]
- except IndexError: return None
-
- def __getitem__(self, key):
- if type(key)==type(1):
- return self._data.values()[key]
- else:
- return self._data[key]
-
- def getLength(self):
- """The length of the NodeList"""
- return len(self._data)
-
- __len__ = getLength
-
- def getNamedItem(self, name):
- """Retrieves a node specified by name. Parameters:
- name Name of a node to retrieve. Return Value A Node (of any
- type) with the specified name, or None if the specified name
- did not identify any node in the map.
- """
- if self._data.has_key(name):
- return self._data[name]
- return None
-
-
-class Attr(Implicit, Node):
- """
- Attr interface - The Attr interface represents an attriubte in an
- Element object. Attr objects inherit the Node Interface
- """
-
- def __init__(self, name, value):
- self.name = name
- self.value = value
- self.specified = 1
-
- def getNodeName(self):
- """The name of this node, depending on its type"""
- return self.name
-
- def getName(self):
- """Returns the name of this attribute."""
- return self.name
-
- def getNodeValue(self):
- """The value of this node, depending on its type"""
- return self.value
-
- def getNodeType(self):
- """A code representing the type of the node."""
- return ATTRIBUTE_NODE
-
- def getSpecified(self):
- """If this attribute was explicitly given a value in the
- original document, this is true; otherwise, it is false."""
- return self.specified
More information about the Zope-Checkins
mailing list