MyPagePlugin not functioning as default handler (solution included, but raises another error)
|Reported by:||anonymous||Owned by:||dgc|
When setting the MyPagePlugin as default handler in Trac
[trac] default_handler = MyPagePlugin
... the page begins to load and nothing happens. I only get following error in the console (using trac as daemon without apache or sth. similar):
---------------------------------------- Exception happened during processing of request from ('127.0.0.1', 2924) Traceback (most recent call last): File "C:\Python25\lib\SocketServer.py", line 464, in process_request_thread self.finish_request(request, client_address) File "C:\Python25\lib\SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "C:\Python25\lib\SocketServer.py", line 522, in __init__ self.handle() File "C:\Python25\lib\BaseHTTPServer.py", line 316, in handle self.handle_one_request() File "C:\Python25\lib\site-packages\trac-0.11.4rc1-py2.5-win32.egg\trac\web\wsgi.py", line 175, in handle_one_request gateway.run(self.server.application) File "C:\Python25\lib\site-packages\trac-0.11.4rc1-py2.5-win32.egg\trac\web\wsgi.py", line 98, in run self._write('') File "C:\Python25\lib\site-packages\trac-0.11.4rc1-py2.5-win32.egg\trac\web\wsgi.py", line 192, in _write assert self.headers_set, 'Response not started' AssertionError: Response not started ----------------------------------------
I didn't have any clue about python before today, but I could fix this problem by determining the default handler within the function/method process_request(self, req) of the MyPagePlugin.py file like following (+ means added; # means changed):
36 def process_request(self, req): 37 url = self.mypage_url(req) ++ if self.config.get('trac', 'default_handler') == 'MyPagePlugin': ++ replacement_urls = ['/me', '/'] ++ else: ++ replacement_urls = ['/'] 38 self.log.debug('process_request: %s' % url) ## if req.path_info in replacement_urls: 40 req.send_response(307) 41 req.send_header('Location', url) 42 req.end_headers() 43 return
But now I have another problem...
Our Trac is configured to redirect the user to the login page if the permission is insufficient. In words: all anonymous access is forbidden, only authenticated users can do anything. PermRedirectPlugin is used for this.
Because of the fix I made the following page is coming up when there is no authentication cookie and the site is called:
Trac detected an internal error:
TypeError: issubclass() arg 1 must be a class
There was an internal error in Trac. It is recommended that you inform your local >Trac administrator and give him all the information he needs to reproduce the issue.
The action that triggered the error was:
Because I'm bloody new to Python, at this point I am at my wits' end.
The tracd server daemon is running on Windows XP Professional SP2 if that helps.