diff create_or_update_organism.py @ 5:7610987e0c48 draft

planemo upload for repository https://github.com/TAMU-CPT/galaxy-webapollo commit 29795b77c0d5c7894219b018a92c5ee7818096c3
author eric-rasche
date Wed, 01 Mar 2017 22:39:58 -0500
parents d4ae83dedb14
children f9a6e151b3b4
line wrap: on
line diff
--- a/create_or_update_organism.py	Thu Jan 12 11:53:44 2017 -0500
+++ b/create_or_update_organism.py	Wed Mar 01 22:39:58 2017 -0500
@@ -1,4 +1,5 @@
 #!/usr/bin/env python
+import sys
 import json
 import argparse
 import time
@@ -9,7 +10,7 @@
 
 
 if __name__ == '__main__':
-    parser = argparse.ArgumentParser(description='Sample script to add an attribute to a feature via web services')
+    parser = argparse.ArgumentParser(description='Create or update an organism in an Apollo instance')
     WAAuth(parser)
 
     parser.add_argument('jbrowse', help='JBrowse Data Directory')
@@ -18,6 +19,7 @@
     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')
+    parser.add_argument('--group', help='Give access to a user group')
 
     args = parser.parse_args()
     wa = WebApolloInstance(args.apollo, args.username, args.password)
@@ -35,8 +37,17 @@
     except Exception:
         org = None
 
-    # TODO: Check ownership
     if org:
+        has_perms = False
+        for user_owned_organism in gx_user.organismPermissions:
+            if 'WRITE' in user_owned_organism['permissions']:
+                has_perms = True
+                break
+
+        if not has_perms:
+            print("Naming Conflict. You do not have permissions to access this organism. Either request permission from the owner, or choose a different name for your organism.")
+            sys.exit(2)
+
         log.info("\tUpdating Organism")
         data = wa.organisms.updateOrganismInfo(
             org['id'],
@@ -47,6 +58,8 @@
             species=args.species,
             public=args.public
         )
+        time.sleep(2)
+        data = [wa.organisms.findOrganismById(org['id'])]
     else:
         # New organism
         log.info("\tAdding Organism")
@@ -68,5 +81,12 @@
             read=True,
         )
 
+        # Group access
+        if args.group:
+            group = wa.groups.loadGroupByName(name=args.group)
+            res = wa.groups.updateOrganismPermission(group, org_cn,
+                                             administrate=False, write=True, read=True,
+                                             export=True)
+
     data = [o for o in data if o['commonName'] == org_cn]
-    print json.dumps(data, indent=2)
+    print(json.dumps(data, indent=2))