annotate alveo_item_list_importer.py @ 1:6fef3489d97c draft

planemo upload commit 0fca33c3b7285bd31f6c7380393d08bbdad4e4d6
author stevecassidy
date Mon, 15 Aug 2016 23:45:46 -0400
parents bfe39bd252df
children 7b6021997b8e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
1 from __future__ import print_function
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
2 import json
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
3 import argparse
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
4 import pyalveo
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
5 import sys
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
6
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
7 API_URL = 'https://app.alveo.edu.au' # TODO: export constants to a separate module
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
8
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
9
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
10 def parser():
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
11 parser = argparse.ArgumentParser(description="Retrieves Alveo Item Lists")
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
12 parser.add_argument('--api_key', required=True, action="store", type=str, help="Alveo API key")
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
13 parser.add_argument('--output', required=True, action="store", type=str, help="Path to output file")
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
14 return parser.parse_args()
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
15
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
16 # TODO: export common function to helper module
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
17 def get_item_lists(api_key):
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
18 client = pyalveo.Client(api_key=api_key, api_url=API_URL)
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
19 return client.get_item_lists()
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
20
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
21 def write_table(item_lists, filename):
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
22 with open(filename, 'w') as outfile:
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
23 for list_set in item_lists.itervalues():
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
24 for item_list in list_set:
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
25 outfile.write("%s (%d)\t%s\n" % (item_list['name'], item_list['num_items'], item_list['item_list_url']))
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
26
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
27 def main():
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
28 args = parser()
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
29 try:
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
30 api_key = open(args.api_key, 'r').read().strip()
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
31 item_lists = get_item_lists(api_key)
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
32 if item_lists:
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
33 write_table(item_lists, args.output)
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
34 except Exception as e:
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
35 print("ERROR: " + str(e), file=sys.stderr)
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
36 sys.exit(1)
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
37
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
38
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
39 if __name__ == '__main__':
bfe39bd252df planemo upload commit 5de43e6a614de2a1b2065bc63823ecc9854ebb32-dirty
stevecassidy
parents:
diff changeset
40 main()