diff create_or_update_organism.py @ 3:d4ae83dedb14 draft

planemo upload for repository https://github.com/TAMU-CPT/galaxy-webapollo commit 4ac38d0b6dba1183f3e78eb5c224c7051064b4a5
author eric-rasche
date Thu, 12 Jan 2017 11:52:28 -0500
parents 6002cc0df04e
children 7610987e0c48
line wrap: on
line diff
--- a/create_or_update_organism.py	Tue May 03 13:48:11 2016 -0400
+++ b/create_or_update_organism.py	Thu Jan 12 11:52:28 2017 -0500
@@ -2,7 +2,7 @@
 import json
 import argparse
 import time
-from webapollo import WebApolloInstance
+from webapollo import WAAuth, WebApolloInstance, OrgOrGuess, GuessOrg, AssertUser
 import logging
 logging.basicConfig(level=logging.INFO)
 log = logging.getLogger(__name__)
@@ -10,41 +10,39 @@
 
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(description='Sample script to add an attribute to a feature via web services')
-    parser.add_argument('apollo', help='Complete Apollo URL')
-    parser.add_argument('username', help='WA Admin Username')
-    parser.add_argument('password', help='WA Admin Password')
+    WAAuth(parser)
 
-    parser.add_argument('cn', help='Organism Common Name')
     parser.add_argument('jbrowse', help='JBrowse Data Directory')
     parser.add_argument('email', help='User Email')
-    parser.add_argument('--blatdb', help='BlatDB Directory')
+    OrgOrGuess(parser)
     parser.add_argument('--genus', help='Organism Genus')
     parser.add_argument('--species', help='Organism Species')
     parser.add_argument('--public', action='store_true', help='Make organism public')
 
     args = parser.parse_args()
-
+    wa = WebApolloInstance(args.apollo, args.username, args.password)
 
-    wa = WebApolloInstance(args.apollo, args.username, args.password)
+    org_cn = GuessOrg(args, wa)
+    if isinstance(org_cn, list):
+        org_cn = org_cn[0]
+
     # User must have an account
-    gx_user = wa.users.loadUsers(email=args.email)
-    if len(gx_user) == 0:
-        raise Exception("Unknown user. Please register first")
+    gx_user = AssertUser(wa.users.loadUsers(email=args.email))
 
     log.info("Determining if add or update required")
     try:
-        org = wa.organisms.findOrganismByCn(args.cn)
+        org = wa.organisms.findOrganismByCn(org_cn)
     except Exception:
         org = None
 
+    # TODO: Check ownership
     if org:
         log.info("\tUpdating Organism")
         data = wa.organisms.updateOrganismInfo(
             org['id'],
-            args.cn,
+            org_cn,
             args.jbrowse,
             # mandatory
-            blatdb=args.blatdb,
             genus=args.genus,
             species=args.species,
             public=args.public
@@ -53,23 +51,22 @@
         # New organism
         log.info("\tAdding Organism")
         data = wa.organisms.addOrganism(
-            args.cn,
+            org_cn,
             args.jbrowse,
-            blatdb=args.blatdb,
             genus=args.genus,
             species=args.species,
             public=args.public
         )
 
         # Must sleep before we're ready to handle
-        time.sleep(1)
-        log.info("Updating permissions for %s on %s", gx_user[0], args.cn)
+        time.sleep(2)
+        log.info("Updating permissions for %s on %s", gx_user, org_cn)
         wa.users.updateOrganismPermission(
-            gx_user[0], args.cn,
+            gx_user, org_cn,
             write=True,
             export=True,
             read=True,
         )
 
-    data = [o for o in data if o['commonName'] == args.cn]
+    data = [o for o in data if o['commonName'] == org_cn]
     print json.dumps(data, indent=2)