The debug page has a post traceback feature, that gives us a very nice way to look at your traceback.
Can you look at the bottom of the page and try this feature out so that we can figure out what's going on for you. But it looks like somehow tg.url is not properly encoding the URL into utf8 on the way into routes, and I'm not sure why that's happening. --Mark Ramm On Thu, Jan 8, 2009 at 4:58 PM, francois chesnay <[email protected]> wrote: > > I tried TG2.0 beta 2, and there is still a problem with saving, and this > gives the following error: > > Error Traceback: > > View as: Interactive (full) | Text (full) | XML (full) > ⇝ GenerationException: Can only return a string, got unicode instead: > /FrontPage > clear this > URL: http://localhost:8080/save > Module weberror.evalexception:428 in respond view > << try: > __traceback_supplement__ = errormiddleware.Supplement, self, > environ > app_iter = self.application(environ, detect_start_response) > > # Don't create a list from a paste.fileapp object >>> app_iter = self.application(environ, detect_start_response) > Module tg.configuration:495 in remover view > << def remover(environ, start_response): > try: > return app(environ, start_response) > finally: > log.debug("Removing DBSession from current thread") >>> return app(environ, start_response) > Module repoze.tm:19 in __call__ view > << return start_response(status, headers, exc_info) > try: > result = self.application(environ, save_status_and_headers) > except: > self.abort() >>> result = self.application(environ, save_status_and_headers) > Module tw.core.middleware:36 in __call__ view > << def __call__(self, environ, start_response): > return self.wsgi_app(environ, start_response) > > def wsgi_app(self, environ, start_response): >>> return self.wsgi_app(environ, start_response) > Module tw.core.middleware:59 in wsgi_app view > << else: > # Pass request downstream > resp = req.get_response(self.application) > return resp(environ, start_response) > finally: >>> resp = req.get_response(self.application) > Module webob:1307 in get_response view > Module webob:1275 in call_application view > Module tw.core.resource_injector:67 in _injector view > << def _injector(environ, start_response): > req = Request(environ) > resp = req.get_response(app) > content_type = > resp.headers.get('Content-Type','text/plain').lower() > if 'html' in content_type: >>> resp = req.get_response(app) > Module webob:1307 in get_response view > Module webob:1275 in call_application view > Module beaker.middleware:81 in __call__ view > << self.cache_manager) > environ[self.environ_key] = self.cache_manager > return self.app(environ, start_response) >>> return self.app(environ, start_response) > Module beaker.middleware:159 in __call__ view > << headers.append(('Set-cookie', cookie)) > return start_response(status, headers, exc_info) > return self.wrap_app(environ, session_start_response) > > def _get_session(self): >>> return self.wrap_app(environ, session_start_response) > Module routes.middleware:118 in __call__ view > << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] > > response = self.app(environ, start_response) > > # Wrapped in try as in rare cases the attribute will be gone > already >>> response = self.app(environ, start_response) > Module pylons.wsgiapp:117 in __call__ view > << > controller = self.resolve(environ, start_response) > response = self.dispatch(controller, environ, start_response) > > if 'paste.testing_variables' in environ and hasattr(response, >>> response = self.dispatch(controller, environ, start_response) > Module pylons.wsgiapp:316 in dispatch view > << if log_debug: > log.debug("Calling controller class with WSGI interface") > return controller(environ, start_response) > > def load_test_env(self, environ): >>> return controller(environ, start_response) > Module wiki20.lib.base:33 in __call__ view > << # available in environ['pylons.routes_dict'] > > return TGController.__call__(self, environ, start_response) >>> return TGController.__call__(self, environ, start_response) > Module pylons.controllers.core:204 in __call__ view > << return response(environ, self.start_response) > > response = self._dispatch_call() > if not start_response_called: > self.start_response = start_response >>> response = self._dispatch_call() > Module pylons.controllers.core:159 in _dispatch_call view > << req.environ['pylons.action_method'] = func > > response = self._inspect_call(func) > else: > if log_debug: >>> response = self._inspect_call(func) > Module pylons.controllers.core:95 in _inspect_call view > << func.__name__, args) > try: > result = self._perform_call(func, args) > except HTTPException, httpe: > if log_debug: >>> result = self._perform_call(func, args) > Module tg.controllers:508 in _perform_call view > << controller, remainder, params = > self._get_routing_info(routingArgs) > result = DecoratedController._perform_call( > self, controller, params, remainder=remainder) > > except HTTPException, httpe: >>> self, controller, params, remainder=remainder) > Module tg.controllers:108 in _perform_call view > << # call controller method > output = controller(*remainder, **dict(params)) > > except formencode.api.Invalid, inv: >>> output = controller(*remainder, **dict(params)) > Module wiki20.controllers.root:44 in save view > << page = DBSession.query(Page).filter_by(pagename=pagename).one() > page.data = data > redirect("/" + pagename) > > @expose("wiki20.templates.edit") >>> redirect("/" + pagename) > Module tg.controllers:543 in redirect view > << """ > > url(*args, **kwargs) > found = HTTPFound(location=url(*args, **kwargs)).exception >>> url(*args, **kwargs) > Module paste.registry:155 in __call__ view > << def __call__(self, *args, **kw): > return self._current_obj()(*args, **kw) > > def __repr__(self): >>> return self._current_obj()(*args, **kw) > Module routes.util:405 in __call__ view > << if not isinstance(url, str) and url is not None: > raise GenerationException("Can only return a string, got " > "unicode instead: %s" % url) > if url is None: > raise GenerationException( >>> "unicode instead: %s" % url) > GenerationException: Can only return a string, got unicode instead: > /FrontPage > > > > > > > > > -- Mark Ramm-Christensen email: mark at compoundthinking dot com blog: www.compoundthinking.com/blog --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears Trunk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/turbogears-trunk?hl=en -~----------~----~----~----~------~----~------~--~---
