Ejemplo n.º 1
0
def list_projects(user, write=None, ignore=None):
    ''' Return the list of projects this user can see'''

    if ignore is None:
        ignore = ["_rev", "acl", "file_protocol", "metadata_format", "cloud",
                "file_acl"]

    store = Couch(db_name="project")
    projects = store.list_all()

    perm = IdAcl.WRITE if write else IdAcl.READ

    visible = []
    for record in projects:
        acl = IdAcl(record["acl"])
        if acl.allow(perm, IdAcl.TENANT_NAME, user.tenant_name()) or \
                acl.allow(perm, IdAcl.USERNAME, user.username()):
            visible.append(record)

    return  [{k.strip("_"): v for k, v in i.items() if k not in ignore}
            for i in visible]