comparison 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
comparison
equal deleted inserted replaced
4:23ead6905145 5:7610987e0c48
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 import sys
2 import json 3 import json
3 import argparse 4 import argparse
4 import time 5 import time
5 from webapollo import WAAuth, WebApolloInstance, OrgOrGuess, GuessOrg, AssertUser 6 from webapollo import WAAuth, WebApolloInstance, OrgOrGuess, GuessOrg, AssertUser
6 import logging 7 import logging
7 logging.basicConfig(level=logging.INFO) 8 logging.basicConfig(level=logging.INFO)
8 log = logging.getLogger(__name__) 9 log = logging.getLogger(__name__)
9 10
10 11
11 if __name__ == '__main__': 12 if __name__ == '__main__':
12 parser = argparse.ArgumentParser(description='Sample script to add an attribute to a feature via web services') 13 parser = argparse.ArgumentParser(description='Create or update an organism in an Apollo instance')
13 WAAuth(parser) 14 WAAuth(parser)
14 15
15 parser.add_argument('jbrowse', help='JBrowse Data Directory') 16 parser.add_argument('jbrowse', help='JBrowse Data Directory')
16 parser.add_argument('email', help='User Email') 17 parser.add_argument('email', help='User Email')
17 OrgOrGuess(parser) 18 OrgOrGuess(parser)
18 parser.add_argument('--genus', help='Organism Genus') 19 parser.add_argument('--genus', help='Organism Genus')
19 parser.add_argument('--species', help='Organism Species') 20 parser.add_argument('--species', help='Organism Species')
20 parser.add_argument('--public', action='store_true', help='Make organism public') 21 parser.add_argument('--public', action='store_true', help='Make organism public')
22 parser.add_argument('--group', help='Give access to a user group')
21 23
22 args = parser.parse_args() 24 args = parser.parse_args()
23 wa = WebApolloInstance(args.apollo, args.username, args.password) 25 wa = WebApolloInstance(args.apollo, args.username, args.password)
24 26
25 org_cn = GuessOrg(args, wa) 27 org_cn = GuessOrg(args, wa)
33 try: 35 try:
34 org = wa.organisms.findOrganismByCn(org_cn) 36 org = wa.organisms.findOrganismByCn(org_cn)
35 except Exception: 37 except Exception:
36 org = None 38 org = None
37 39
38 # TODO: Check ownership
39 if org: 40 if org:
41 has_perms = False
42 for user_owned_organism in gx_user.organismPermissions:
43 if 'WRITE' in user_owned_organism['permissions']:
44 has_perms = True
45 break
46
47 if not has_perms:
48 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.")
49 sys.exit(2)
50
40 log.info("\tUpdating Organism") 51 log.info("\tUpdating Organism")
41 data = wa.organisms.updateOrganismInfo( 52 data = wa.organisms.updateOrganismInfo(
42 org['id'], 53 org['id'],
43 org_cn, 54 org_cn,
44 args.jbrowse, 55 args.jbrowse,
45 # mandatory 56 # mandatory
46 genus=args.genus, 57 genus=args.genus,
47 species=args.species, 58 species=args.species,
48 public=args.public 59 public=args.public
49 ) 60 )
61 time.sleep(2)
62 data = [wa.organisms.findOrganismById(org['id'])]
50 else: 63 else:
51 # New organism 64 # New organism
52 log.info("\tAdding Organism") 65 log.info("\tAdding Organism")
53 data = wa.organisms.addOrganism( 66 data = wa.organisms.addOrganism(
54 org_cn, 67 org_cn,
66 write=True, 79 write=True,
67 export=True, 80 export=True,
68 read=True, 81 read=True,
69 ) 82 )
70 83
84 # Group access
85 if args.group:
86 group = wa.groups.loadGroupByName(name=args.group)
87 res = wa.groups.updateOrganismPermission(group, org_cn,
88 administrate=False, write=True, read=True,
89 export=True)
90
71 data = [o for o in data if o['commonName'] == org_cn] 91 data = [o for o in data if o['commonName'] == org_cn]
72 print json.dumps(data, indent=2) 92 print(json.dumps(data, indent=2))