summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErnesto Rico-Schmidt <e.rico.schmidt@gmail.com>2014-07-21 19:13:18 (GMT)
committerErnesto Rico-Schmidt <e.rico.schmidt@gmail.com>2014-07-21 19:13:18 (GMT)
commit821a356f1a8a36560f6731a716c65b5c80553379 (patch)
treecd3b6abeaed2cb53940006eafb2a3d79ca08c656
parente0e8c8569a9355ea49b7c346605e450d6d474655 (diff)
handle errors better
-rw-r--r--program/utils.py17
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