Mercurial > repos > stevecassidy > alveoimport
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 |
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() |