I think there was a bug with __before__ and the decoration object that has been fixed in the last beta, what version of tg2 are you using (you can check with paster tginfo).
I have not tried making the RootController into a decorated controller, I'd try making a new controller and routing to that. I won't have time to make a doc this afternoon, but I can try to look at it tomorrow if you don't get it working before then. --Mark On Fri, Mar 13, 2009 at 1:01 PM, Carl <[email protected]> wrote: > > Mark, > Thanks for the quick response. It didn't work though. My > RootController now subclasses tg.controllers.DecoratedController and I > get the following error even on http://localhost:8080/ (the root): > > Module tg.controllers:125 in _perform_call >>> controller.decoration.run_hooks('before_validate', remainder, > AttributeError: 'function' object has no attribute 'decoration' > > > The code expects 'controller' to be an object with a 'decoration' > attribute, but in my case the controller is the __before__ method of > RootController: > >>>> controller > <bound method RootController.__before__ of > <nine.controllers.root.RootController object at 0x99a3d0>> > > Is it possible to post a fully working TG2 custom routes example? It > doesn't even have to be the entire project just the differences from a > standard quickstarted project. > > Thanks, Carl > > > > > > > > On Mar 13, 7:40 am, Mark Ramm <[email protected]> wrote: >> Yea, those docs are missing some important details. >> >> One think you do need to know is that the >> TGController/ObjectDispatchController expects to be routed to for >> object dispatch, not for a final page. >> >> So you want to use DecoratedController when defining your own custom routes. >> >> All of this should go on the RoutesIntegration page. >> >> --Mark >> >> >> >> On Fri, Mar 13, 2009 at 6:23 AM, Carl <[email protected]> wrote: >> >> > Hi, >> > I'm trying to do custom routes with TG2 and failing so far. The >> > instructions inhttp://turbogears.org/2.0/docs/main/RoutesIntegration.html >> > tell you to: >> >> > "you can easily do that, just by providing your own function to set up >> > the routes map. You can update the routes defaults by overriding the >> > setup_routes method of the base_config object in app_cfg.py." >> >> > Well, it's not that clear . setup routes() is a method of AppConfig. >> > If you just implement your own function in app_cfg.py it is never >> > called. You can subclass AppConfig and provide your own setup_routes() >> > method or you can create a custom setup_routes() function and assign >> > it to the original AppConfig before you instantiate base_config: >> >> > AppConfig.setup_routes = custom_setup_routes >> > base_config = AppConfig() >> >> > You will also need to import a bunch of stuff from tg.configuration >> > such as Mapper and config. >> >> > Once, I got that part right and my custom_setup_routes function was >> > actually called, it just did,'t work. I can't even get a simple hard- >> > coded path to work. Here is my custom_setup_routes() function: >> >> > def custom_setup_routes(self): >> > """Setup the default TG2 routes >> >> > Override this and set up your own routes maps if you want to use >> > routes. >> > """ >> > #from dbgp.client import brk; brk(port=9011) >> > map = Mapper(directory=config['pylons.paths']['controllers'], >> > always_scan=config['debug']) >> >> > map.connect('prefix/foo', controller='root', action='foo') >> >> > # Setup a default route for the root of object dispatch >> > map.connect('*url', controller='root', >> > action='routes_placeholder') >> >> > config['routes.map'] = map >> >> > I expect that the /prefix/foo URL will result in a call to the foo() >> > method on my RootController, but it doesn't. The standard object >> > dospatch works just fine, so /foo does get to my foo() method. >> >> > Can someone tell me what I'm doing wrong and/or explain how to debug >> > routing and/or show a full-fledged example of custom routes in TG2? >> >> > Thanks, Carl >> >> -- >> Mark Ramm-Christensen >> email: mark at compoundthinking dot com >> blog:www.compoundthinking.com/blog > > > -- 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" 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?hl=en -~----------~----~----~----~------~----~------~--~---

