Mercurial > repos > eric-rasche > apollo
comparison 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 |
comparison
equal
deleted
inserted
replaced
2:c8e16c8eff98 | 3:d4ae83dedb14 |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 import json | 2 import json |
3 import argparse | 3 import argparse |
4 import time | 4 import time |
5 from webapollo import WebApolloInstance | 5 from webapollo import WAAuth, WebApolloInstance, OrgOrGuess, GuessOrg, AssertUser |
6 import logging | 6 import logging |
7 logging.basicConfig(level=logging.INFO) | 7 logging.basicConfig(level=logging.INFO) |
8 log = logging.getLogger(__name__) | 8 log = logging.getLogger(__name__) |
9 | 9 |
10 | 10 |
11 if __name__ == '__main__': | 11 if __name__ == '__main__': |
12 parser = argparse.ArgumentParser(description='Sample script to add an attribute to a feature via web services') | 12 parser = argparse.ArgumentParser(description='Sample script to add an attribute to a feature via web services') |
13 parser.add_argument('apollo', help='Complete Apollo URL') | 13 WAAuth(parser) |
14 parser.add_argument('username', help='WA Admin Username') | |
15 parser.add_argument('password', help='WA Admin Password') | |
16 | 14 |
17 parser.add_argument('cn', help='Organism Common Name') | |
18 parser.add_argument('jbrowse', help='JBrowse Data Directory') | 15 parser.add_argument('jbrowse', help='JBrowse Data Directory') |
19 parser.add_argument('email', help='User Email') | 16 parser.add_argument('email', help='User Email') |
20 parser.add_argument('--blatdb', help='BlatDB Directory') | 17 OrgOrGuess(parser) |
21 parser.add_argument('--genus', help='Organism Genus') | 18 parser.add_argument('--genus', help='Organism Genus') |
22 parser.add_argument('--species', help='Organism Species') | 19 parser.add_argument('--species', help='Organism Species') |
23 parser.add_argument('--public', action='store_true', help='Make organism public') | 20 parser.add_argument('--public', action='store_true', help='Make organism public') |
24 | 21 |
25 args = parser.parse_args() | 22 args = parser.parse_args() |
23 wa = WebApolloInstance(args.apollo, args.username, args.password) | |
26 | 24 |
25 org_cn = GuessOrg(args, wa) | |
26 if isinstance(org_cn, list): | |
27 org_cn = org_cn[0] | |
27 | 28 |
28 wa = WebApolloInstance(args.apollo, args.username, args.password) | |
29 # User must have an account | 29 # User must have an account |
30 gx_user = wa.users.loadUsers(email=args.email) | 30 gx_user = AssertUser(wa.users.loadUsers(email=args.email)) |
31 if len(gx_user) == 0: | |
32 raise Exception("Unknown user. Please register first") | |
33 | 31 |
34 log.info("Determining if add or update required") | 32 log.info("Determining if add or update required") |
35 try: | 33 try: |
36 org = wa.organisms.findOrganismByCn(args.cn) | 34 org = wa.organisms.findOrganismByCn(org_cn) |
37 except Exception: | 35 except Exception: |
38 org = None | 36 org = None |
39 | 37 |
38 # TODO: Check ownership | |
40 if org: | 39 if org: |
41 log.info("\tUpdating Organism") | 40 log.info("\tUpdating Organism") |
42 data = wa.organisms.updateOrganismInfo( | 41 data = wa.organisms.updateOrganismInfo( |
43 org['id'], | 42 org['id'], |
44 args.cn, | 43 org_cn, |
45 args.jbrowse, | 44 args.jbrowse, |
46 # mandatory | 45 # mandatory |
47 blatdb=args.blatdb, | |
48 genus=args.genus, | 46 genus=args.genus, |
49 species=args.species, | 47 species=args.species, |
50 public=args.public | 48 public=args.public |
51 ) | 49 ) |
52 else: | 50 else: |
53 # New organism | 51 # New organism |
54 log.info("\tAdding Organism") | 52 log.info("\tAdding Organism") |
55 data = wa.organisms.addOrganism( | 53 data = wa.organisms.addOrganism( |
56 args.cn, | 54 org_cn, |
57 args.jbrowse, | 55 args.jbrowse, |
58 blatdb=args.blatdb, | |
59 genus=args.genus, | 56 genus=args.genus, |
60 species=args.species, | 57 species=args.species, |
61 public=args.public | 58 public=args.public |
62 ) | 59 ) |
63 | 60 |
64 # Must sleep before we're ready to handle | 61 # Must sleep before we're ready to handle |
65 time.sleep(1) | 62 time.sleep(2) |
66 log.info("Updating permissions for %s on %s", gx_user[0], args.cn) | 63 log.info("Updating permissions for %s on %s", gx_user, org_cn) |
67 wa.users.updateOrganismPermission( | 64 wa.users.updateOrganismPermission( |
68 gx_user[0], args.cn, | 65 gx_user, org_cn, |
69 write=True, | 66 write=True, |
70 export=True, | 67 export=True, |
71 read=True, | 68 read=True, |
72 ) | 69 ) |
73 | 70 |
74 data = [o for o in data if o['commonName'] == args.cn] | 71 data = [o for o in data if o['commonName'] == org_cn] |
75 print json.dumps(data, indent=2) | 72 print json.dumps(data, indent=2) |