Mercurial > repos > eric-rasche > apollo
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)) |