Problem: Embedding 401 page (not author ized) for "edit" with standard_error_message
Heiko Besemann <[email protected]> Fri, 17 Jul 2009 17:24:18 +0200
| Newsgroups | gmane.comp.web.zope.silva.devel |
|---|---|
| Message-ID | <b6b10958f357e2230ed7b89f51e6fbfc@localhost> |
Hi there, sorry for bugging the dev-list with my problems. However I run into a strange thing tonight I can not explain and need someones professional advice how to get this fixed. Well, Silva uses the "standard_error_message" for rendering custom errors like 404 (not found), 500 (system problems) and 401 (not authorized). When one of these errors happends my wish is that Silva will not render the standard_error_message template but uses my custom skins content area to display the message. So for 404, 401 and 500 I did the following thing: <tal:block tal:condition="python: error_type == 'NotFound'"> <html metal:use-macro="context/@@mywonderfullcustomskin/main"> <head> <title metal:fill-slot="title"> 404 – Resource not found </title> </head> <body> <div metal:fill-slot="body"> <h2>404 – Resource not found</h2> <p> Huhu, where is my page gone? </p> </div> </body> </html> </tal:block> </tal:block> Now this works if I type something like "http://www.wattwanderinfo.de/where_is_my_page". The error message will get displayed withing my custom skin. Next thing I wanted was to render are "401" errors. The above code differs only for the condition check but everthing else is the same. I use my context/@@mywonderfullcustomskin macro aso. If I try to authenticate as "manager" to get into ZMI and cancel the authentication request, yes I get that permission denied stuff shown correctly on my page. However (and this is the thing I dont understand) if I try to authenticate as "edit" and cancel authentication I get some error like the following on my webpage: -- snipp -- You are not authorized to access this resource. Username and password are not correct. (Also, the following error occurred while attempting to render the standard error message, please see the event log for full details: (<Products.Silva.SilvaObject.Zope3ViewAttribute object at 0x01CF2450>, 'mywonderfullcustomskin')) -- snapp -- Zope event logfile shows me: -- snipp -- 2009-07-17T17:17:52 ERROR root Exception while rendering an error message Traceback (most recent call last): File "C:\Zope\2.11.1\Zope\lib\python\OFS\SimpleItem.py", line 227, in raise_standardErrorMessage v = s(**kwargs) File "C:\Zope\2.11.1\Zope\lib\python\Shared\DC\Scripts\Bindings.py", line 313, in __call__ return self._bindAndExec(args, kw, None) File "C:\Zope\2.11.1\Zope\lib\python\Shared\DC\Scripts\Bindings.py", line 350, in _bindAndExec return self._exec(bound_data, args, kw) File "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates\ZopePageTemplate.py", line 330, in _exec result = self.pt_render(extra_context=bound_names) File "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates\ZopePageTemplate.py", line 427, in pt_render result = PageTemplate.pt_render(self, source, extra_context) File "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates\PageTemplate.py", line 96, in pt_render showtal=showtal) File "C:\Zope\2.11.1\Zope\lib\python\zope\pagetemplate\pagetemplate.py", line 115, in pt_render strictinsert=0, sourceAnnotations=sourceAnnotations)() File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 271, in __call__ self.interpret(self.program) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 346, in interpret handlers[opcode](self, args) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 536, in do_optTag_tal self.do_optTag(stuff) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 521, in do_optTag return self.no_tag(start, program) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 516, in no_tag self.interpret(program) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 346, in interpret handlers[opcode](self, args) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 855, in do_condition self.interpret(block) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 346, in interpret handlers[opcode](self, args) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 536, in do_optTag_tal self.do_optTag(stuff) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 521, in do_optTag return self.no_tag(start, program) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 516, in no_tag self.interpret(program) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 346, in interpret handlers[opcode](self, args) File "C:\Zope\2.11.1\Zope\lib\python\zope\tal\talinterpreter.py", line 870, in do_useMacro macro = self.engine.evaluateMacro(macroExpr) File "C:\Zope\2.11.1\Zope\lib\python\zope\tales\tales.py", line 696, in evaluate return expression(self) File "C:\Zope\2.11.1\Zope\lib\python\zope\tales\expressions.py", line 217, in __call__ return self._eval(econtext) File "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates\Expressions.py", line 131, in _eval ob = self._subexprs[-1](econtext) File "C:\Zope\2.11.1\Zope\lib\python\zope\tales\expressions.py", line 124, in _eval ob = self._traverser(ob, element, econtext) File "C:\Zope\2.11.1\Zope\lib\python\Products\PageTemplates\Expressions.py", line 83, in boboAwareZopeTraverse request=request) File "C:\Zope\2.11.1\Zope\lib\python\zope\traversing\adapters.py", line 154, in traversePathElement return namespaceLookup(ns, nm, obj, request) File "C:\Zope\2.11.1\Zope\lib\python\zope\traversing\namespace.py", line 112, in namespaceLookup return traverser.traverse(name, ()) File "C:\Zope\2.11.1\Zope\lib\python\zope\traversing\namespace.py", line 345, in traverse raise TraversalError(self.context, name) TraversalError: (<Products.Silva.SilvaObject.Zope3ViewAttribute object at 0x01CF2450>, 'mywonderfullcustomskin') -- snapp -- So why is everything working fine for 404 and 401 (with manage authentication), but not for 401 with "edit" authentication? Cheers, Heiko