From 668a0dd349e0d0f9dcddedbefa61d842855ef497 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Fri, 7 Feb 2020 09:38:33 +0000 Subject: [PATCH] Record time whenever cards change --- apiserver/apiserver/api/management/commands/run_daily.py | 4 +++- apiserver/apiserver/api/utils_stats.py | 8 ++++++++ apiserver/apiserver/api/views.py | 9 +++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/apiserver/apiserver/api/management/commands/run_daily.py b/apiserver/apiserver/api/management/commands/run_daily.py index b491877..2ba708b 100644 --- a/apiserver/apiserver/api/management/commands/run_daily.py +++ b/apiserver/apiserver/api/management/commands/run_daily.py @@ -1,5 +1,5 @@ from django.core.management.base import BaseCommand, CommandError -from apiserver.api import models, utils +from apiserver.api import models, utils, utils_stats import time @@ -22,3 +22,5 @@ class Command(BaseCommand): self.stdout.write('Tallied {} active members in {} s'.format( count, str(time.time() - start) )) + + utils_stats.changed_card() diff --git a/apiserver/apiserver/api/utils_stats.py b/apiserver/apiserver/api/utils_stats.py index 6192091..b165698 100644 --- a/apiserver/apiserver/api/utils_stats.py +++ b/apiserver/apiserver/api/utils_stats.py @@ -1,3 +1,4 @@ +from django.core.cache import cache import time DEFAULTS = { @@ -10,3 +11,10 @@ DEFAULTS = { 'bay_108_temp': None, 'bay_110_temp': None, } + +def changed_card(): + ''' + Called whenever the card list could change, ie. cards added, modified, or + user status becoming overdue by 3 months + ''' + cache.set('last_card_change', time.time()) diff --git a/apiserver/apiserver/api/views.py b/apiserver/apiserver/api/views.py index 789597c..36520c8 100644 --- a/apiserver/apiserver/api/views.py +++ b/apiserver/apiserver/api/views.py @@ -134,6 +134,7 @@ class MemberViewSet(Base, Retrieve, Update): member.save() utils.tally_membership_months(member) utils.gen_member_forms(member) + utils_stats.changed_card() return Response(200) @@ -142,6 +143,14 @@ class CardViewSet(Base, Create, Retrieve, Update, Destroy): queryset = models.Card.objects.all() serializer_class = serializers.CardSerializer + def perform_create(self, serializer): + serializer.save() + utils_stats.changed_card() + + def perform_update(self, serializer): + serializer.save() + utils_stats.changed_card() + class CourseViewSet(Base, List, Retrieve, Create, Update): permission_classes = [AllowMetadata | IsAuthenticated, IsAdminOrReadOnly | IsInstructorOrReadOnly]