using mako templates and beaker in google app engine

Dec 01, 2009

apparently some people have problems implementing beaker to gae. you can easily access to beaker session like this.
session = self.request.environ['beaker.session']

if you want to implement a login_required decorator you can code something like the following;
def login_required(func):
  def wrapper(self, *args, **kwargs):
    session = self.request.environ['beaker.session']
    if 'username' not in session:
      self.error(403)
  return func(self, *args, **kwargs)
return wrapper


mako templates in gae

i'm a big fan of mako templates. whenever i code a site i always use mako templates. however gae doesn't support mako by default, so if you want to use mako in your applications you can code a mako renderer class something like the following so you can get rid of the ifnotequal and such like nonsense.
from mako.lookup import TemplateLookup

class RenderMako(object):
  
  def __init__(self, *args, **kwargs):
    self._lookup = TemplateLookup(*args, **kwargs) 

  def __getattr__(self, template_name, **kwargs):
    template_name = '%s.html' % template_name
    template = self._lookup.get_template(template_name)
    return template.render(**kwargs)