aircox-radiocampus/aircox/views/api.py
2019-09-05 23:05:04 +02:00

46 lines
1.2 KiB
Python

import datetime
from django.utils import timezone as tz
from rest_framework.generics import ListAPIView
from ..models import Log
from ..serializers import LogInfo, LogInfoSerializer
from .log import BaseLogListView
class BaseAPIView:
@property
def station(self):
return self.request.station
def get_queryset(self):
return super().get_queryset().station(self.station)
class LiveAPIView(BaseLogListView, BaseAPIView, ListAPIView):
serializer_class = LogInfoSerializer
min_date = None
queryset = Log.objects.all()
def get(self, *args, **kwargs):
self.min_date = tz.now() - tz.timedelta(minutes=20)
return super().get(*args, **kwargs)
def get_serializer(self, queryset, *args, **kwargs):
queryset = Log.merge_diffusions(self.get_queryset(),
self.get_diffusions_queryset())
queryset = [LogInfo(obj) for obj in queryset]
return super().get_serializer(queryset, *args, **kwargs)
def get_queryset(self):
return super().get_queryset().after(self.min_date)
def get_diffusions_queryset(self):
return super().get_diffusions_queryset().after(self.min_date)
# Monitoring