You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.4 KiB
Python

from osinacore.api.utils import *
from osichat.models import *
from rest_framework.decorators import api_view
from .serializers import *
from django.shortcuts import get_object_or_404
from django.db.models import Q
@api_view(['GET'])
def get_chat_rooms(request):
chat_rooms = ChatRoom.objects.annotate(last_update=Max('chatmessage__date_sent')).order_by('-last_update', '-date_created')
chat_rooms_serializer = ChatRoomSerializer(chat_rooms, many=True)
return successRes(chat_rooms_serializer.data)
@api_view(['GET'])
def get_visitors(request):
start_date = request.data.get("start_date")
end_date = request.data.get("end_date")
if start_date and end_date: #Range of time
visitors = Visitor.objects.filter(Q(visitorlog__visit_date__range=[start_date, end_date]) | Q(visitorlog__left_date__range=[start_date, end_date])).distinct()
elif start_date and not end_date: #Specific date
visitors = Visitor.objects.filter(Q(visitorlog__visit_date=start_date) | Q(visitorlog__left_date=start_date)).distinct()
else: #Active visitors
visitors = Visitor.objects.filter(visitorlog__left_date__isnull=True).distinct()
visitors_count = visitors.count()
visitors_serializer = VisitorSerializer(visitors, many=True)
response_data = {
"count": visitors_count,
"visitors": visitors_serializer.data
}
return successRes(response_data)