hi alessandro, out of curiousity, does telling "hey, if there's a url mapped for this controller action serve it else map this controller action as the url." affecting performance that much?
On Jul 10, 1:42 pm, Alessandro Molina <[email protected]> wrote: > 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.

