Add a special page showing the latest laser usage

This commit is contained in:
2022-02-08 02:28:10 +00:00
parent 8d8a399f33
commit 680039fa51
5 changed files with 151 additions and 4 deletions

View File

@@ -16,10 +16,15 @@ import datetime, time
from . import models, fields, utils, utils_ldap, utils_auth, utils_stats
from .. import settings, secrets
#class UsageSerializer(serializers.ModelSerializer):
# class Meta:
# model = models.UsageTrack
# fields = '__all__'
class UsageSerializer(serializers.ModelSerializer):
first_name = serializers.SerializerMethodField()
class Meta:
model = models.Usage
fields = '__all__'
def get_first_name(self, obj):
return obj.user.member.preferred_name
class TransactionSerializer(serializers.ModelSerializer):
# fields directly from old portal. replace with slugs we want

View File

@@ -683,6 +683,33 @@ class StatsViewSet(viewsets.ViewSet, List):
return Response(200)
@action(detail=False, methods=['get'])
def usage_data(self, request):
if 'device' not in request.query_params:
raise exceptions.ValidationError(dict(device='This field is required.'))
if not utils.is_request_from_protospace(request):
raise exceptions.PermissionDenied()
device = request.query_params['device']
last_session = models.Usage.objects.filter(device=device).last()
if not last_session:
raise exceptions.ValidationError(dict(device='Session not found.'))
serializer = serializers.UsageSerializer(last_session)
try:
track = cache.get('track', {})[device]
except KeyError:
track = False
return Response(dict(
track=track,
session=serializer.data
))
@action(detail=False, methods=['post'])
def autoscan(self, request):
if 'autoscan' not in request.data: