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)