diff --git a/process_request/clients.py b/process_request/clients.py index 5eac82c..ca614d0 100644 --- a/process_request/clients.py +++ b/process_request/clients.py @@ -33,7 +33,13 @@ def __init__(self, baseurl, apikey): "X-AEON-API-KEY": apikey}) def get_reading_rooms(self): - return self.get("ReadingRooms").json() + reading_rooms = self.get("ReadingRooms").json() + # Only pass along locations with open hours + open_reading_rooms = [] + for reading_room in reading_rooms: + if len(reading_room["openHours"]): + open_reading_rooms.append(reading_room) + return open_reading_rooms def get_closures(self, reading_room_id): return self.get("/".join(["ReadingRooms", str(reading_room_id), "Closures"])).json() diff --git a/process_request/helpers.py b/process_request/helpers.py index 7df1ee0..a31bae4 100644 --- a/process_request/helpers.py +++ b/process_request/helpers.py @@ -471,4 +471,5 @@ def refresh_reading_room_cache(): reading_rooms = aeon.get_reading_rooms() for reading_room in reading_rooms: reading_room["closures"] = aeon.get_closures(reading_room["id"]) + ReadingRoomCache.objects.all().delete() return ReadingRoomCache.objects.update_or_create(defaults={'json': json.dumps(reading_rooms)})[0] diff --git a/process_request/views.py b/process_request/views.py index ee600a3..32f2e6c 100644 --- a/process_request/views.py +++ b/process_request/views.py @@ -153,6 +153,9 @@ def get(self, request): except ReadingRoomCache.DoesNotExist: cached_reading_rooms = refresh_reading_room_cache() cache_needs_refresh = False + except ReadingRoomCache.MultipleObjectsReturned: + cached_reading_rooms = ReadingRoomCache.objects.latest("timestamp") + cache_needs_refresh = True if cache_needs_refresh: threading.Thread(target=refresh_reading_room_cache).start() return HttpResponse(cached_reading_rooms.json, content_type='application/json')