#!/usr/bin/env python
import json
import argparse
from webapollo import WAAuth, WebApolloInstance, AssertUser, accessible_organisms

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="List all organisms available in an Apollo instance")
    WAAuth(parser)
    parser.add_argument("email", help="User Email")
    args = parser.parse_args()

    wa = WebApolloInstance(args.apollo, args.username, args.password)

    gx_user = AssertUser(wa.users.loadUsers(email=args.email))
    all_orgs = wa.organisms.findAllOrganisms()

    orgs = accessible_organisms(gx_user, all_orgs)

    cleanedOrgs = []
    for organism in all_orgs:
        org = {
            "name": organism["commonName"],
            "id": organism["id"],
            "annotations": organism["annotationCount"],
            "sequences": organism["sequences"],
        }
        cleanedOrgs.append(org)

    print(json.dumps(cleanedOrgs, indent=2))
Esempio n. 2
0
    OrgOrGuess(parser)
    args = parser.parse_args()

    wa = WebApolloInstance(args.apollo, args.username, args.password)
    # User must have an account
    gx_user = AssertUser(wa.users.loadUsers(email=args.email))

    # Get organism
    org_cn = GuessOrg(args, wa)[0]

    # Fetch all organisms
    all_orgs = wa.organisms.findAllOrganisms()
    # Figure out which are accessible to the user
    # filter out common names
    orgs = [d[0] for d in accessible_organisms(gx_user, all_orgs)]

    # This user MUST be allowed to access an organism before they can
    # modify permissions on it.
    assert org_cn in orgs

    org = wa.organisms.findOrganismByCn(org_cn)

    # The other person must already be an apollo user
    other_user = AssertUser(
        wa.users.loadUsers(email=args.share_with.replace("__at__", "@")))

    wa.users.updateOrganismPermission(
        other_user,
        org_cn,
        administrate=False,