Actually the future TG versions are getting rid of routes by default as it was a huge performance bottleneck. So it will make a lot of sense to create a tgext which provides routes based controller _lookup and so on. I can give a try at it as soon as I'll have some spare time, but it is not something will happen soon.
I think your solution should work but probably overriding _get_dispatchable to return what you need would be a solution that has to mimic less TG things like setting up i18n, calling _before, _after and so on as the _call would remain the same. Both anyway rely a lot on internals of TG that might change in the future On Tue, Jul 10, 2012 at 11:01 AM, Artur Gavkaliuk <[email protected]> wrote: > Hello > I've found solution and would like to hear your opinion. > It's very basic but could be easily improved. > I've just added next method to my BaseController: > class BaseController(TGController): > ........ > def _perform_call(self, func, args): > if (func != self.routes_placeholder): > if hasattr(self, '_before'): > self._before(*args, **args) > r = self._call(func, args, remainder=None) > if hasattr(self, '_after'): > self._after(*args, **args) > return r > else: > return TGController._perform_call(self, func, args) > > Could it be added to original TG code? > > Понеділок, 9 липня 2012 р. 14:42:43 UTC+3 користувач Artur Gavkaliuk > написав: >> >> Thank you for quick answer. >> I'm wondering if there is a way to set exact method of controller which >> should handle request inside _lookup. >> And, are _lookup methods called hierarchically (particularly, will root >> _lookup be called if the one from mounted controller failed)? >> >> Понеділок, 9 липня 2012 р. 14:28:23 UTC+3 користувач Alessandro Molina >> написав: >>> >>> I'm not a routes user, so my answer might be somehow wrong, it is >>> mostly based on the knowledge that I have of the TurboGears routing >>> system. >>> >>> The routes integration was not used by TurboGears itself, was there >>> due to Pylons and was hijacked to always route to the RootController >>> which was then in charge of the real routing. This is the reason why >>> you can only route to Pylons controller using routes and not to >>> TurboGears one, losing so the TurboGears features like validation, >>> expose and so on. If you add routes that route to a TurboGears >>> controller the controller itself will try to route them again, >>> obviously doing the wrong thing >>> >>> Somehow you might be able to use routes with validation and expose by >>> creating a Pylons controller that inherits from >>> tg.controllers.decoratedcontroller.DecoratedController but keep in >>> mind that this might break any time in the future. >>> >>> The TurboGears way to manage regular expression based routing is to >>> handle them inside the _lookup method and return the actual controller >>> instance that has to handle them with the remaining part of the url >>> for which the dispatch has to continue from the returned controller. >>> >>> On Mon, Jul 9, 2012 at 1:13 PM, Artur Gavkaliuk <[email protected]> >>> wrote: >>> > Hello >>> > This question was raised several times but I didn't see clear and >>> > up-to-date >>> > answer. >>> > So, is there any convenient way to map TGController subclass with >>> > custom >>> > url? >>> > Pylons WSGIController is mapped easily but I would like to have @expose >>> > decorator working. >>> > I'm following 'classic' example from app_config: >>> > # Add a Samples route >>> > map.connect('/samples/', controller='samples', >>> > action=index) >>> > >>> > # Setup a default route for the root of object >>> > dispatch >>> > map.connect('*url', controller='root', >>> > action='routes_placeholder') >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> > Groups >>> > "TurboGears" group. >>> > To view this discussion on the web visit >>> > https://groups.google.com/d/msg/turbogears/-/8yXhtPQj6zUJ. >>> > 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. > > -- > You received this message because you are subscribed to the Google Groups > "TurboGears" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/turbogears/-/5RFVdh94nf8J. > > 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. -- 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.

