Commit c783eac2 authored by Wichert Akkerman's avatar Wichert Akkerman

Merge change from 2.12 branch

parent 76ac887d
......@@ -24,6 +24,7 @@ from Acquisition import aq_acquire
from Acquisition import aq_base
from Acquisition import aq_inner
from Acquisition import aq_parent
from Acquisition.interfaces import IAcquirer
from App.config import getConfiguration
from time import asctime
from zExceptions import upgradeException
......@@ -218,6 +219,8 @@ class ZPublisherExceptionHook:
# zope.publisher uses as well.
view = queryMultiAdapter((v, REQUEST), name=u'index.html')
if view is not None:
if IAcquirer.providedBy(published):
view = view.__of__(published)
v = view()
response = REQUEST.RESPONSE
response.setStatus(t)
......
......@@ -16,6 +16,7 @@ import sys
import unittest
import logging
import Acquisition
from zope.component.testing import PlacelessSetup
from zope.interface.common.interfaces import IException
from zope.publisher.skinnable import setDefaultSkin
......@@ -215,7 +216,7 @@ class ExceptionHookTest(ExceptionHookTestCase):
self.call_no_exc(hook, None, None, f)
self.assertEquals(hook.unresolved_conflict_errors, 2)
class Client:
class Client(Acquisition.Explicit):
def __init__(self):
self.standard_error_message = True
......@@ -320,14 +321,16 @@ class ExceptionMessageRenderTest(ExceptionHookTestCase):
tb = client.messages[0]
self.failUnless("ConflictError: database conflict error" in tb, tb)
class CustomExceptionView:
class CustomExceptionView(Acquisition.Explicit):
def __init__(self, context, request):
self.context = context
self.request = request
def __call__(self):
return "Exception View: %s" % self.context.__class__.__name__
return "Exception View: %s\nContext: %s" % (
self.context.__class__.__name__,
Acquisition.aq_parent(self).__class__.__name__)
def registerExceptionView(for_):
from zope.interface import Interface
......@@ -355,6 +358,7 @@ class ExceptionViewsTest(PlacelessSetup, ExceptionHookTestCase):
self.failUnless(isinstance(v, HTTPResponse), v)
self.failUnless(v.status == 401, (v.status, 401))
self.failUnless("Exception View: Unauthorized" in str(v))
self.failUnless("Context: StandardClient" in str(v))
def testCustomExceptionViewForbidden(self):
from ZPublisher.HTTPResponse import HTTPResponse
......
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