diff options
author | Ernesto Rico-Schmidt <e.rico.schmidt@gmail.com> | 2014-07-21 19:13:18 (GMT) |
---|---|---|
committer | Ernesto Rico-Schmidt <e.rico.schmidt@gmail.com> | 2014-07-21 19:13:18 (GMT) |
commit | 821a356f1a8a36560f6731a716c65b5c80553379 (patch) | |
tree | cd3b6abeaed2cb53940006eafb2a3d79ca08c656 | |
parent | e0e8c8569a9355ea49b7c346605e450d6d474655 (diff) |
handle errors better
-rw-r--r-- | program/utils.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/program/utils.py b/program/utils.py index cdc6a09..9a086da 100644 --- a/program/utils.py +++ b/program/utils.py @@ -2,12 +2,27 @@ from django.conf import settings import json import urllib +from os.path import join def get_automation_id_choices(): base_url = getattr(settings, 'AUTOMATION_BASE_URL', None) + cache_dir = getattr(settings, 'AUTOMATION_CACHE_DIR', 'cache') + cached_shows = join(cache_dir, 'shows.json') shows = [] if base_url: - shows_list = json.load(urllib.urlopen(base_url))['shows'] + try: + shows_json = urllib.urlopen(base_url).read() + shows_list = json.loads(shows_json)['shows'] + except IOError: + try: + with open(cached_shows) as cache: + shows_list = json.loads(cache.read())['shows'] + except IOError: + shows_list = [] + else: + with open(cached_shows, 'w') as cache: + cache.write(shows_json) + shows = [(s['id'], s['title']) for s in shows_list] return shows |