Mercurial > repos > gga > apollo_delete_organism
diff delete_organism.py @ 10:dd63c6e11a95 draft
"planemo upload for repository https://github.com/galaxy-genome-annotation/galaxy-tools/tree/master/tools/apollo commit 08015be1ee8a784e0619f961aaa724857debfd6f"
author | gga |
---|---|
date | Mon, 02 Dec 2019 05:48:12 -0500 |
parents | 0af4179e6758 |
children |
line wrap: on
line diff
--- a/delete_organism.py Mon Jul 29 10:10:09 2019 -0400 +++ b/delete_organism.py Mon Dec 02 05:48:12 2019 -0500 @@ -3,41 +3,56 @@ import argparse import logging +import os -from webapollo import GuessOrg, OrgOrGuess, PermissionCheck, WAAuth, WebApolloInstance +from apollo import accessible_organisms +from apollo.util import GuessOrg, OrgOrGuess + +from arrow.apollo import get_apollo_instance + +from webapollo import UserObj, handle_credentials + logging.basicConfig(level=logging.INFO) log = logging.getLogger(__name__) +def IsRemote(): + return 'GALAXY_SHARED_DIR' not in os.environ or len(os.environ['GALAXY_SHARED_DIR'].lower().strip()) == 0 + + if __name__ == '__main__': - parser = argparse.ArgumentParser(description='Sample script to completely delete an organism') - WAAuth(parser) + parser = argparse.ArgumentParser(description='Script to completely delete an organism') parser.add_argument('email', help='User Email') OrgOrGuess(parser) args = parser.parse_args() - wa = WebApolloInstance(args.apollo, args.username, args.password) + wa = get_apollo_instance() + # User must have an account - gx_user = wa.users.assertOrCreateUser(args.email) + gx_user = UserObj(**wa.users._assert_or_create_user(args.email)) + handle_credentials(gx_user) # Get organism org_cn = GuessOrg(args, wa) if isinstance(org_cn, list): org_cn = org_cn[0] - if not PermissionCheck(gx_user, org_cn, "WRITE"): - raise Exception("You do not have write permission on this organism") - org = wa.organisms.findOrganismByCn(org_cn) + all_orgs = wa.organisms.get_organisms() + if 'error' in all_orgs: + all_orgs = [] + all_orgs = [org['commonName'] for org in all_orgs] + if org_cn not in all_orgs: + raise Exception("Could not find organism %s" % org_cn) - # Call setSequence to tell apollo which organism we're working with - wa.annotations.setSequence(org['commonName'], org['id']) - # Then get a list of features. - features = wa.annotations.getFeatures() - # For each feature in the features - # If it exists - if 'features' in features: - for feature in features['features']: - # We see that deleteFeatures wants a uniqueName, and so we pass - # is the uniquename field in the feature. - print(wa.annotations.deleteFeatures([feature['uniquename']])) + orgs = accessible_organisms(gx_user, [org_cn], 'WRITE') + if not orgs: + raise Exception("You do not have write permission on this organism") + org = wa.organisms.show_organism(org_cn) + + wa.organisms.delete_features(org['id']) + + if IsRemote(): + print(wa.remote.delete_organism(org['commonName'])) + else: + print(wa.organisms.delete_organism(org['id']))