From f75b782afdf3690e3d0b8af51885b7ff45e7a1b1 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Fri, 7 Feb 2020 09:25:50 +0000 Subject: [PATCH] Add /stats/ API route with defaults --- apiserver/apiserver/api/utils_stats.py | 12 ++++++++++++ apiserver/apiserver/api/views.py | 12 +++++++++++- apiserver/apiserver/urls.py | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 apiserver/apiserver/api/utils_stats.py diff --git a/apiserver/apiserver/api/utils_stats.py b/apiserver/apiserver/api/utils_stats.py new file mode 100644 index 0000000..6192091 --- /dev/null +++ b/apiserver/apiserver/api/utils_stats.py @@ -0,0 +1,12 @@ +import time + +DEFAULTS = { + 'last_card_change': time.time(), + 'next_meeting': None, + 'next_clean': None, + 'member_count': None, + 'due_members': None, + 'old_members': None, + 'bay_108_temp': None, + 'bay_110_temp': None, +} diff --git a/apiserver/apiserver/api/views.py b/apiserver/apiserver/api/views.py index a40e8af..789597c 100644 --- a/apiserver/apiserver/api/views.py +++ b/apiserver/apiserver/api/views.py @@ -16,7 +16,7 @@ import datetime import requests -from . import models, serializers, utils, utils_paypal +from . import models, serializers, utils, utils_paypal, utils_stats from .permissions import ( is_admin_director, AllowMetadata, @@ -312,6 +312,16 @@ class IpnView(views.APIView): +class StatsView(views.APIView): + def get(self, request): + stats_keys = utils_stats.DEFAULTS.keys() + cached_stats = cache.get_many(stats_keys) + stats = utils_stats.DEFAULTS.copy() + stats.update(cached_stats) + return Response(stats) + + + class RegistrationView(RegisterView): serializer_class = serializers.RegistrationSerializer diff --git a/apiserver/apiserver/urls.py b/apiserver/apiserver/urls.py index 89ad96b..007a96c 100644 --- a/apiserver/apiserver/urls.py +++ b/apiserver/apiserver/urls.py @@ -30,5 +30,6 @@ urlpatterns = [ url(r'^password/change/', views.PasswordChangeView.as_view(), name='rest_password_change'), url(r'^user/', views.UserView.as_view(), name='user'), url(r'^ping/', views.PingView.as_view(), name='ping'), + url(r'^stats/', views.StatsView.as_view(), name='stats'), url(IPN_ROUTE, views.IpnView.as_view(), name='ipn'), ]