Commit 0cb01170 authored by 's avatar

- backported changes from trunk

parent 8ac25879
...@@ -20,12 +20,10 @@ item types. ...@@ -20,12 +20,10 @@ item types.
$Id$ $Id$
""" """
import inspect
import marshal import marshal
import re import re
import sys import sys
import time import time
import warnings
from AccessControl.SecurityInfo import ClassSecurityInfo from AccessControl.SecurityInfo import ClassSecurityInfo
from AccessControl.SecurityManagement import getSecurityManager from AccessControl.SecurityManagement import getSecurityManager
...@@ -118,7 +116,7 @@ class Item(Base, ...@@ -118,7 +116,7 @@ class Item(Base,
# Alias id to __name__, which will make tracebacks a good bit nicer: # Alias id to __name__, which will make tracebacks a good bit nicer:
__name__=ComputedAttribute(lambda self: self.getId()) __name__=ComputedAttribute(lambda self: self.getId())
# Name, relative to SOFTWARE_URL of icon used to display item # Name, relative to BASEPATH1 of icon used to display item
# in folder listings. # in folder listings.
icon='' icon=''
...@@ -239,35 +237,10 @@ class Item(Base, ...@@ -239,35 +237,10 @@ class Item(Base,
handle_errors = getattr(getattr(REQUEST, 'RESPONSE', None), handle_errors = getattr(getattr(REQUEST, 'RESPONSE', None),
'handle_errors', False) 'handle_errors', False)
# Can we re-raise the exception with a rendered-to-HTML if not handle_errors:
# exception value? To be able to do so, the exception # If we have been asked not to handle errors don't even bother
# constructor needs to be able to take more than two # with transforming the exception into HTML. Just re-raise the
# arguments (some Zope 3 exceptions can't). # original exception right away.
can_raise = False
ctor = getattr(error_type, '__init__', None)
if inspect.ismethoddescriptor(ctor):
# If it's a method descriptor, it means we've got a
# base ``__init__`` method that was not overriden,
# likely from the base ``Exception`` class.
can_raise = True
else:
if inspect.ismethod(ctor):
ctor = getattr(ctor, 'im_func', None)
if inspect.isbuiltin(ctor):
# In Python 2.4, the ``__init__`` method of the
# base ``Exception`` class is a ``builtin
# method``.
can_raise = True
elif ctor is not None and inspect.isfunction(ctor):
can_raise = (
len(inspect.getargspec(error_type.__init__)[0]) > 2)
if not (can_raise and handle_errors):
# If we have been asked not to handle errors and we
# can't re-raise a transformed exception don't even
# bother with transforming the exception into
# HTML. Just re-raise the original exception right
# away.
raise error_type, error_value, tb raise error_type, error_value, tb
try: try:
...@@ -306,12 +279,9 @@ class Item(Base, ...@@ -306,12 +279,9 @@ class Item(Base,
html_quote(sys.exc_info()[1]), html_quote(sys.exc_info()[1]),
)) ))
if handle_errors: # If we've been asked to handle errors, just return the rendered
# If we've been asked to handle errors, just # exception and let the ZPublisher Exception Hook deal with it.
# return the rendered exception and let the return error_type, v, tb
# ZPublisher Exception Hook deal with it.
return error_type, v, tb
raise error_type, v, tb
finally: finally:
if hasattr(self, '_v_eek'): del self._v_eek if hasattr(self, '_v_eek'): del self._v_eek
tb = None tb = None
......
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