#!/usr/bin/python import web import controller import model # # URL Mappings # urls = ( "/add/?", controller.Add, "/edit/(\d+)", controller.Edit, "/const/?", controller.Const, "/const/(\d+)", controller.Const, "/const/add/?", controller.ConstAdd, "/const/add/from/(\d+)", controller.ConstAdd, "/const/edit/(\d+)", controller.ConstEdit, "/categories", controller.Cat, "/(\d\d\d\d)/(\d\d?)/?", controller.Show, "/", controller.Show, "/(.*)", controller.FourOhFour ) # # ORM # def handle_sql(handler): web.ctx.orm = model.Session() try: try: h = handler() except web.HTTPError: web.ctx.orm.commit() raise except: web.ctx.orm.rollback() raise else: web.ctx.orm.commit() return h finally: model.Session.remove() # # Check for mobile (at least somewhat) # mobile_checks = ["J2ME", "Opera Mini"] def handle_mobile(): ua = web.ctx.env.get("HTTP_USER_AGENT", "") web.ctx.is_mobile = any((x in ua) for x in mobile_checks) # # The App # app = web.application(urls, globals()) app.notfound = controller.FourOhFour.catch # add processors app.add_processor(handle_sql) app.add_processor(web.loadhook(handle_mobile)) # debug for the moment web.config.debug = True # # And go! if __name__ == "__main__": app.run()