Skip to content

Commit

Permalink
RockefellerArchiveCenter#389: gracefully handled multiple ReadingRoom…
Browse files Browse the repository at this point in the history
…Cache records
  • Loading branch information
ctgraham committed Jan 30, 2025
1 parent 3702d1b commit 2023b9a
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 1 deletion.
8 changes: 7 additions & 1 deletion process_request/clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
1 change: 1 addition & 0 deletions process_request/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
3 changes: 3 additions & 0 deletions process_request/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down

0 comments on commit 2023b9a

Please sign in to comment.