From 884cdafacb8f28344de3b68da6b5f6f9b7bbf9b8 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sun, 25 Apr 2021 20:30:33 +0000 Subject: [PATCH] Revert usage tracking --- apiserver/apiserver/api/models.py | 18 +++++------ apiserver/apiserver/api/serializers.py | 28 ++++++++--------- apiserver/apiserver/api/views.py | 42 ++++++++++++++------------ 3 files changed, 45 insertions(+), 43 deletions(-) diff --git a/apiserver/apiserver/api/models.py b/apiserver/apiserver/api/models.py index 021821d..3dafda6 100644 --- a/apiserver/apiserver/api/models.py +++ b/apiserver/apiserver/api/models.py @@ -155,15 +155,15 @@ class StatsSpaceActivity(models.Model): date = models.DateField(default=today_alberta_tz) card_scans = models.IntegerField() -class UsageTrack(models.Model): - user = models.ForeignKey(User, related_name='usages', blank=True, null=True, on_delete=models.SET_NULL) - - # member_id = models.IntegerField(blank=True, null=True) # restrict to current users for now - username = models.CharField(max_length=64) # allows us to match non-Spaceport users later - - devicename = models.CharField(max_length=64) - start_time = models.DateTimeField(auto_now_add=True) - num_seconds = models.IntegerField() +#class UsageTrack(models.Model): +# user = models.ForeignKey(User, related_name='usages', blank=True, null=True, on_delete=models.SET_NULL) +# +# # member_id = models.IntegerField(blank=True, null=True) # restrict to current users for now +# username = models.CharField(max_length=64) # allows us to match non-Spaceport users later +# +# devicename = models.CharField(max_length=64) +# start_time = models.DateTimeField(auto_now_add=True) +# num_seconds = models.IntegerField() class HistoryIndex(models.Model): content_type = models.ForeignKey(ContentType, null=True, on_delete=models.SET_NULL) diff --git a/apiserver/apiserver/api/serializers.py b/apiserver/apiserver/api/serializers.py index 19cf018..5d4a174 100644 --- a/apiserver/apiserver/api/serializers.py +++ b/apiserver/apiserver/api/serializers.py @@ -14,10 +14,10 @@ import re from . import models, fields, utils, utils_ldap, utils_auth from .. import settings, secrets -class UsageSerializer(serializers.ModelSerializer): - class Meta: - model = models.UsageTrack - fields = '__all__' +#class UsageSerializer(serializers.ModelSerializer): +# class Meta: +# model = models.UsageTrack +# fields = '__all__' class TransactionSerializer(serializers.ModelSerializer): # fields directly from old portal. replace with slugs we want @@ -267,7 +267,7 @@ class AdminSearchSerializer(serializers.Serializer): member = serializers.SerializerMethodField() training = serializers.SerializerMethodField() transactions = serializers.SerializerMethodField() - usages = serializers.SerializerMethodField() + #usages = serializers.SerializerMethodField() def get_member(self, obj): serializer = AdminMemberSerializer(obj) @@ -302,14 +302,14 @@ class AdminSearchSerializer(serializers.Serializer): serializer.is_valid() return serializer.data - def get_usages(self, obj): - if obj.user: - queryset = obj.user.usages.order_by('-start_time') - else: - queryset = [] - serializer = UsageSerializer(data=queryset, many=True) - serializer.is_valid() - return serializer.data + #def get_usages(self, obj): + # if obj.user: + # queryset = obj.user.usages.order_by('-start_time') + # else: + # queryset = [] + # serializer = UsageSerializer(data=queryset, many=True) + # serializer.is_valid() + # return serializer.data class CardSerializer(serializers.ModelSerializer): @@ -460,7 +460,7 @@ class UserSerializer(serializers.ModelSerializer): 'is_staff', 'door_code', 'wifi_pass', - 'usages', + #'usages', ] depth = 1 diff --git a/apiserver/apiserver/api/views.py b/apiserver/apiserver/api/views.py index 3f0be9c..6334bb1 100644 --- a/apiserver/apiserver/api/views.py +++ b/apiserver/apiserver/api/views.py @@ -520,27 +520,29 @@ class StatsViewSet(viewsets.ViewSet, List): track[devicename] = dict(time=time.time(), username=first_name) cache.set('track', track) - # update device usage - last_session = models.UsageTrack.objects.filter(devicename=devicename).last() - if not last_session or last_session.username != username: - try: - user = User.objects.get(username__iexact=username) - except User.DoesNotExist: - msg = 'Device tracker problem finding username: ' + username - utils.alert_tanner(msg) - logger.error(msg) - user = None + ## update device usage + ## issue: sometimes two sessions are created + ## issue: sometimes two /track/ requests are sent and double time is counted + #last_session = models.UsageTrack.objects.filter(devicename=devicename).last() + #if not last_session or last_session.username != username: + # try: + # user = User.objects.get(username__iexact=username) + # except User.DoesNotExist: + # msg = 'Device tracker problem finding username: ' + username + # utils.alert_tanner(msg) + # logger.error(msg) + # user = None - models.UsageTrack.objects.create( - user=user, - username=username, - devicename=devicename, - num_seconds=0, - ) - logging.info('New ' + devicename + ' session created for: ' + username) - else: - last_session.num_seconds = F('num_seconds') + 10 - last_session.save(update_fields=['num_seconds']) + # models.UsageTrack.objects.create( + # user=user, + # username=username, + # devicename=devicename, + # num_seconds=0, + # ) + # logging.info('New ' + devicename + ' session created for: ' + username) + #else: + # last_session.num_seconds = F('num_seconds') + 10 + # last_session.save(update_fields=['num_seconds']) return Response(200)