def make_app(global_conf, **app_conf): """Create a WSGI application and return it global_conf is a dict representing the Paste configuration options, the paste.deploy.converters should be used when parsing Paste config options to ensure they're treated properly. """ # Load our Pylons configuration defaults from tasktracker.config.environment import load_environment load_environment(global_conf, app_conf) # Load our default Pylons WSGI app and make g available app = pylons.wsgiapp.PylonsApp() app = ConfigMiddleware(app, {'app_conf':app_conf, 'global_conf':global_conf}) # YOUR MIDDLEWARE # Put your own middleware here, so that any problems are caught by the error # handling middleware underneath app = SupervisorErrorMiddleware(app) # @@@ Change HTTPExceptions to HTTP responses @@@ app = httpexceptions.make_middleware(app, global_conf) # @@@ Error Handling @@@ app = ErrorHandler(app, global_conf, error_template=error_template, **config['pylons.errorware']) # @@@ Static Files in public directory @@@ static_app = StaticURLParser(config['pylons.paths']['static_files']) # @@@ WebHelper's static javascript files @@@ javascripts_app = StaticJavascripts() # @@@ Cascade @@@ app = Cascade([static_app, javascripts_app, app]) # @@@ Display error documents for 401, 403, 404 status codes (if debug is disabled also # intercepts 500) @@@ app = ErrorDocuments(app, global_conf, mapper=error_mapper, **app_conf) # @@@ Establish the Registry for this application @@@ app = RegistryManager(app) app = cabochon_to_tt_middleware(app) try: openplans_wrapper = app_conf['openplans_wrapper'] except KeyError: raise ValueError('No openplans_wrapper specified in [app:tasktracker] configuration') openplans_wrapper = load_object(openplans_wrapper) app = openplans_wrapper(app, app_conf) #handle cabochon messages login_file = app_conf.get('cabochon_password_file') if login_file: username, password = file(login_file).read().strip().split(":") if username: app = WSSEAuthMiddleware(app, {username : password}, required=False) app = translate_environ_middleware(app, global_conf, app_conf) app = fill_environ_middleware(app, global_conf, app_conf) return app
def setup_config(command, filename, section, vars): """ Set up the task tracker's fixtures """ dummy, sect = section.split(':') conf = appconfig('config:%s#%s' % (filename, sect), relative_to=conf_dir) load_environment(conf.global_conf, conf.local_conf, setup_config=True) CONFIG.push_process_config({'app_conf': conf.local_conf, 'global_conf': conf.global_conf}) #you'll need these when you need to zap tables # DONT EVER UNCOMMENT THIS CODE. # for table in soClasses[::-1]: # table.dropTable(ifExists=True) constraints = [] for table in soClasses: _constraints = table.createTable(ifNotExists=True, applyConstraints=False) if _constraints is not None: constraints += _constraints connection = hub.hub.getConnection() for constraint in constraints: connection.query(constraint) def makeUser(usename, password="******"): """Makes a user.""" return User(username=usename, password=password.encode("base64")) for user in """admin auth anon magicbronson rmarianski jhammel cabraham ltucker novalis rob whit ian smk jarasi cholmes bryan vanessa""".split(): makeUser(user) def makeRole(**kwargs): """Makes a role if it doesn't already exist.""" role = Role.selectBy(name = kwargs['name']) if role.count(): role = role[0] role.set(**kwargs) return role else: return Role(**kwargs) def makeAction(**kwargs): """Makes an action if it doesn't already exist.""" action = Action.selectBy(action = kwargs['action']) if action.count(): action = action[0] action.set(**kwargs) return action else: return Action(**kwargs) anon = makeRole(name="Anonymous", description="Anyone at all", level=100) auth = makeRole(name="Authenticated", description="Any logged-in OpenPlans user", level=60) pm = makeRole(name="ProjectMember", description="Any project member", level=50) taskowner = makeRole(name="TaskOwner", description="The person who owns the task", level=40) manager = makeRole(name="ListOwner", description="Any person who owns the list", level=30) pa = makeRole(name="ProjectAdmin", description="Any project administrator", level=20) all = [manager, pm, auth, anon] members = [manager, pm, auth] setRoles(makeAction(action="tasklist_create"), [pa, pm]) setRoles(makeAction(action="tasklist_delete"), [pa, manager]) setRoles(makeAction(action="task_show"), all) setRoles(makeAction(action="tasklist_show"), all) setRoles(makeAction(action="tasklist_update"), [manager, pa]) setRoles(makeAction(action="task_create"), all) setRoles(makeAction(action="task_update"), all) setRoles(makeAction(action="task_claim"), members) setRoles(makeAction(action="task_change_status"), all) setRoles(makeAction(action="task_assign"), members) setRoles(makeAction(action="task_comment"), members)