diff delete_organism.py @ 10:c3b5bc8b4080 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:43:20 -0500
parents 950fb2bf116d
children
line wrap: on
line diff
--- a/delete_organism.py	Mon Jul 29 10:08:57 2019 -0400
+++ b/delete_organism.py	Mon Dec 02 05:43:20 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']))