using mako templates and beaker in google app engine

01.12.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)
blog comments powered by Disqus