Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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)