You have various options, the most similar to your current approach are: - Register a controller wrapper which will be executed for every controller http://turbogears.readthedocs.org/en/latest/turbogears/hooks.html#controller-wrappers - Add your code to yourapp.lib.base.BaseController.__call__ which gets executed for every controller - Subclass your controllers all from a base class which implements _before
On Wed, Feb 5, 2014 at 3:05 PM, pkraus <[email protected]> wrote: > i have a set of nested menu options that pretty heavy on the database. > They only actually change on a nightly update to the server so i thought i > would chache them. I need to have them passed into each controller method > since they need to pass to my master template. > > looking here > http://turbogears.readthedocs.org/en/latest/turbogears/caching.html?highlight=caching > > I came up with... > > def _before(self, *args, **kw): > def get_item_cats(): > return > model.DBSession.query(model.m_items.ItemCategory).order_by( > model.m_items.ItemCategory.id) > > def get_ie_class(): > result = re.search(";\s*(MSIE\s)*(\d)", request.user_agent) # > Match > is_ie, ie_class = False, '' > if result: > is_ie = int(result.group(2)) > ie_class = 'no-js ie%s oldie' %is_ie > return (is_ie, ie_class) > > mycache_cats = cache.get_cache('get_item_cats') > cachedvalue_cats = mycache_cats.get_value( > key=datetime.date.month, > createfunc=get_item_cats, > expiretime=3600 > ) > tmpl_context.extra_flags = {'show_admin':False} > > tmpl_context.is_ie,tmpl_context.ie_class = get_ie_class()[:] > tmpl_context.item_cats = cachedvalue_cats > > > then i have to include tmpl_context in each controller method and put the > def _before in every controller that I create. > > Is there a better cleaner way to do this so that i don't have to manually > add tmpl_context to the dictionary on every controller and is there a > better way to include this in all controllers? > > Thanks! > > > > -- > You received this message because you are subscribed to the Google Groups > "TurboGears" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/turbogears. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "TurboGears" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/turbogears. For more options, visit https://groups.google.com/groups/opt_out.

