def __call__(self, environ, start_response):
     """Invoke the Controller"""
     # WSGIController.__call__ dispatches to the Controller method
     # the request is routed to. This routing information is
     # available in environ['pylons.routes_dict']
     try:
         return WSGIController.__call__(self, environ, start_response)
     finally:
         Session.remove()
def setup_app(command, conf, vars):
    """Place any commands to setup lab here"""
    # Don't reload the app if it was loaded under the testing environment
    if not pylons.test.pylonsapp:
        load_environment(conf.global_conf, conf.local_conf)

    # Create the tables if they don't already exist
    Base.metadata.create_all(bind=Session.bind)

    # Populate koan table with static data
    num_koans = len(Session.query(Koan).all())
    if num_koans != len(koan_dict.keys()):
        for title, text in koan_dict.iteritems():
            koan = Koan(title=title, text="\n".join(text))
            Session.add(koan)
            Session.commit()
def init_model(engine):
    """Call me before using any of the tables or classes in the model"""
    Session.configure(bind=engine)