From 9982a2feda087b7909c4f92790633e1d55f574ca Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Wed, 16 Feb 2022 20:56:55 -0800 Subject: [PATCH 01/11] no cache on time based calls --- ocfweb/api/meeting_hours.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index ecaa2cdf..2f3e8a7b 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -1,5 +1,6 @@ from django.http import HttpRequest from django.http import JsonResponse +from django.views.decorators.cache import never_cache from ocflib.org.meeting_hours import read_current_meeting from ocflib.org.meeting_hours import read_meeting_list from ocflib.org.meeting_hours import read_next_meeting @@ -12,6 +13,7 @@ def get_meetings_list(request: HttpRequest) -> JsonResponse: ) +@never_cache def get_next_meeting(request: HttpRequest) -> JsonResponse: next_meeting = read_next_meeting() if next_meeting is None: @@ -26,6 +28,7 @@ def get_next_meeting(request: HttpRequest) -> JsonResponse: ) +@never_cache def get_current_meeting(request: HttpRequest) -> JsonResponse: current_meeting = read_current_meeting() if current_meeting is None: From 0994731afa7fc782215c5827e7e59bf1c970c99a Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Wed, 16 Feb 2022 21:04:34 -0800 Subject: [PATCH 02/11] use ocfweb caching instead --- ocfweb/api/meeting_hours.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index 2f3e8a7b..6f201fa5 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -1,10 +1,11 @@ from django.http import HttpRequest from django.http import JsonResponse -from django.views.decorators.cache import never_cache from ocflib.org.meeting_hours import read_current_meeting from ocflib.org.meeting_hours import read_meeting_list from ocflib.org.meeting_hours import read_next_meeting +from ocfweb.caching import periodic + def get_meetings_list(request: HttpRequest) -> JsonResponse: return JsonResponse( @@ -13,7 +14,7 @@ def get_meetings_list(request: HttpRequest) -> JsonResponse: ) -@never_cache +@periodic(60) def get_next_meeting(request: HttpRequest) -> JsonResponse: next_meeting = read_next_meeting() if next_meeting is None: @@ -28,7 +29,7 @@ def get_next_meeting(request: HttpRequest) -> JsonResponse: ) -@never_cache +@periodic(60) def get_current_meeting(request: HttpRequest) -> JsonResponse: current_meeting = read_current_meeting() if current_meeting is None: From 999fda23ebf88415146c27db447ca9e03f3cdfbd Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Wed, 16 Feb 2022 21:41:03 -0800 Subject: [PATCH 03/11] reduce cache-ttl --- ocfweb/api/meeting_hours.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index 6f201fa5..18284ad4 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -14,7 +14,7 @@ def get_meetings_list(request: HttpRequest) -> JsonResponse: ) -@periodic(60) +@periodic(30) def get_next_meeting(request: HttpRequest) -> JsonResponse: next_meeting = read_next_meeting() if next_meeting is None: @@ -29,7 +29,7 @@ def get_next_meeting(request: HttpRequest) -> JsonResponse: ) -@periodic(60) +@periodic(30) def get_current_meeting(request: HttpRequest) -> JsonResponse: current_meeting = read_current_meeting() if current_meeting is None: From 08a7d6db5017c5d7723552456aac0a203042581d Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Wed, 16 Feb 2022 21:52:36 -0800 Subject: [PATCH 04/11] properly implement caching --- ocfweb/api/meeting_hours.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index 18284ad4..dc11be91 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -9,14 +9,13 @@ def get_meetings_list(request: HttpRequest) -> JsonResponse: return JsonResponse( - [item._asdict() for item in read_meeting_list()], + [item._asdict() for item in _read_meeting_list()], safe=False, ) -@periodic(30) def get_next_meeting(request: HttpRequest) -> JsonResponse: - next_meeting = read_next_meeting() + next_meeting = _read_next_meeting() if next_meeting is None: return JsonResponse( {}, @@ -29,9 +28,8 @@ def get_next_meeting(request: HttpRequest) -> JsonResponse: ) -@periodic(30) def get_current_meeting(request: HttpRequest) -> JsonResponse: - current_meeting = read_current_meeting() + current_meeting = _read_current_meeting() if current_meeting is None: return JsonResponse( {}, @@ -42,3 +40,17 @@ def get_current_meeting(request: HttpRequest) -> JsonResponse: current_meeting._asdict(), safe=False, ) + + +def _read_meeting_list() -> list: + return read_meeting_list() + + +@periodic(5) +def _read_next_meeting() -> list: + return read_next_meeting() + + +@periodic(5) +def _read_current_meeting() -> list: + return read_current_meeting() From 8c2683da7f729fb3ae1c549194222817b0e27630 Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Wed, 16 Feb 2022 21:54:19 -0800 Subject: [PATCH 05/11] use correct List type --- ocfweb/api/meeting_hours.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index dc11be91..81cf1350 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -1,3 +1,4 @@ +from typing import List from django.http import HttpRequest from django.http import JsonResponse from ocflib.org.meeting_hours import read_current_meeting @@ -42,15 +43,15 @@ def get_current_meeting(request: HttpRequest) -> JsonResponse: ) -def _read_meeting_list() -> list: +def _read_meeting_list() -> List: return read_meeting_list() @periodic(5) -def _read_next_meeting() -> list: +def _read_next_meeting() -> List: return read_next_meeting() @periodic(5) -def _read_current_meeting() -> list: +def _read_current_meeting() -> List: return read_current_meeting() From 4ecbf2060a1d32b5e31325c94b8ceec72ef334cd Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Wed, 16 Feb 2022 21:54:54 -0800 Subject: [PATCH 06/11] add 'Any' type --- ocfweb/api/meeting_hours.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index 81cf1350..fe84fbf1 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -1,4 +1,4 @@ -from typing import List +from typing import Any, List from django.http import HttpRequest from django.http import JsonResponse from ocflib.org.meeting_hours import read_current_meeting @@ -43,15 +43,15 @@ def get_current_meeting(request: HttpRequest) -> JsonResponse: ) -def _read_meeting_list() -> List: +def _read_meeting_list() -> List[Any]: return read_meeting_list() @periodic(5) -def _read_next_meeting() -> List: +def _read_next_meeting() -> List[Any]: return read_next_meeting() @periodic(5) -def _read_current_meeting() -> List: +def _read_current_meeting() -> List[Any]: return read_current_meeting() From 1a77d474b3145deff571064557ef63337aaf9f8c Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Wed, 16 Feb 2022 21:57:08 -0800 Subject: [PATCH 07/11] reorder python imports --- ocfweb/api/meeting_hours.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index fe84fbf1..acfbcf55 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -1,4 +1,6 @@ -from typing import Any, List +from typing import Any +from typing import List + from django.http import HttpRequest from django.http import JsonResponse from ocflib.org.meeting_hours import read_current_meeting From aea41fa9cd13a75b8e86ef5a5c8d9d783e14f620 Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Sat, 5 Mar 2022 12:48:14 -0800 Subject: [PATCH 08/11] pluralize meetings --- ocfweb/api/meeting_hours.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index acfbcf55..0ec95c43 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -3,9 +3,9 @@ from django.http import HttpRequest from django.http import JsonResponse -from ocflib.org.meeting_hours import read_current_meeting +from ocflib.org.meeting_hours import read_current_meetings from ocflib.org.meeting_hours import read_meeting_list -from ocflib.org.meeting_hours import read_next_meeting +from ocflib.org.meeting_hours import read_next_meetings from ocfweb.caching import periodic @@ -18,29 +18,29 @@ def get_meetings_list(request: HttpRequest) -> JsonResponse: def get_next_meeting(request: HttpRequest) -> JsonResponse: - next_meeting = _read_next_meeting() - if next_meeting is None: + next_meetings = _read_next_meetings() + if next_meetings is None: return JsonResponse( {}, status=204, ) return JsonResponse( - next_meeting._asdict(), + next_meetings._asdict(), safe=False, ) def get_current_meeting(request: HttpRequest) -> JsonResponse: - current_meeting = _read_current_meeting() - if current_meeting is None: + current_meetings = _read_current_meetings() + if current_meetings is None: return JsonResponse( {}, status=204, ) return JsonResponse( - current_meeting._asdict(), + current_meetings._asdict(), safe=False, ) @@ -50,10 +50,10 @@ def _read_meeting_list() -> List[Any]: @periodic(5) -def _read_next_meeting() -> List[Any]: - return read_next_meeting() +def _read_next_meetings() -> List[Any]: + return read_next_meetings() @periodic(5) -def _read_current_meeting() -> List[Any]: - return read_current_meeting() +def _read_current_meetings() -> List[Any]: + return read_current_meetings() From 94622671e272ec9ab0ddf99e2353cbdb8dfded8b Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Sat, 5 Mar 2022 13:03:28 -0800 Subject: [PATCH 09/11] pluralize urls --- ocfweb/api/urls.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ocfweb/api/urls.py b/ocfweb/api/urls.py index 8b831736..6776e96c 100644 --- a/ocfweb/api/urls.py +++ b/ocfweb/api/urls.py @@ -17,8 +17,8 @@ path('lab/desktops', lab.desktop_usage, name='desktop_usage'), path('lab/num_users', stats.get_num_users_in_lab, name='get_num_users_in_lab'), path('lab/staff', stats.get_staff_in_lab, name='get_staff_in_lab'), - path('meetings/current', meeting_hours.get_current_meeting, name='current_meeting'), - path('meetings/next', meeting_hours.get_next_meeting, name='next_meeting'), + path('meetings/current', meeting_hours.get_current_meetings, name='current_meetings'), + path('meetings/next', meeting_hours.get_next_meetings, name='next_meetings'), path('meetings/list', meeting_hours.get_meetings_list, name='meetings_list'), path('lab/printers_summary', stats.get_printers_summary, name='get_printers_summary'), path('lab/desktop_usage', stats.get_desktop_usage, name='get_desktop_usage'), From 53c20e0844ff23db256b4db9df469bba86238940 Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Sat, 5 Mar 2022 13:28:40 -0800 Subject: [PATCH 10/11] pluralize api --- ocfweb/api/meeting_hours.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index 0ec95c43..0ea3409e 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -17,7 +17,7 @@ def get_meetings_list(request: HttpRequest) -> JsonResponse: ) -def get_next_meeting(request: HttpRequest) -> JsonResponse: +def get_next_meetings(request: HttpRequest) -> JsonResponse: next_meetings = _read_next_meetings() if next_meetings is None: return JsonResponse( @@ -31,7 +31,7 @@ def get_next_meeting(request: HttpRequest) -> JsonResponse: ) -def get_current_meeting(request: HttpRequest) -> JsonResponse: +def get_current_meetings(request: HttpRequest) -> JsonResponse: current_meetings = _read_current_meetings() if current_meetings is None: return JsonResponse( From 7b017af4151a5eec85e46ce5d88424ec60a0c378 Mon Sep 17 00:00:00 2001 From: Ben Plate Date: Sat, 5 Mar 2022 13:32:06 -0800 Subject: [PATCH 11/11] convert out to list --- ocfweb/api/meeting_hours.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ocfweb/api/meeting_hours.py b/ocfweb/api/meeting_hours.py index 0ea3409e..087ff861 100644 --- a/ocfweb/api/meeting_hours.py +++ b/ocfweb/api/meeting_hours.py @@ -26,7 +26,7 @@ def get_next_meetings(request: HttpRequest) -> JsonResponse: ) return JsonResponse( - next_meetings._asdict(), + [next_meeting._asdict() for next_meeting in next_meetings], safe=False, ) @@ -40,7 +40,7 @@ def get_current_meetings(request: HttpRequest) -> JsonResponse: ) return JsonResponse( - current_meetings._asdict(), + [current_meeting._asdict() for current_meeting in current_meetings], safe=False, )